Tue, 21 Sep 2004 12:33:21 -0700
text/plain; charset=us-ascii; format=flowed
Alphonse, Prineesh wrote:
> I have a basic doubt regarding Access types in ADA.Suppose I have
> declared a variable as
> type Address is access Integer;
> Pointer : Address;
> Now if I do a Increment Operation in ie Pointer := Pointer + 1; where
> will the Pointer Points to now. Will it be the next Byte or is it the
> Next Integer Location ie pointer will move forward by Four Bytes.
As your compiler will tell you if you try to compile this, "+" is not
defined for type Address, nor is 1 a value of this type.
Be aware that access values are not necessarily the same as addresses in
Ada. The package System.Storage_Elements defines address arithmetic
operations and conversions between Address and an integer type, and the
generic package System.Address_To_Access_Conversions allows conversions
between addresses and access values, so it possible to do pointer
arithmetic in Ada, but it is very low level and in general it is not
needed. You will find that, unless you are building dynamic data
structures, you will rarely need pointers in Ada.
There is a type Address defined in package System, and there is the
'Address attribute, so it is considered poor practice to use the name
Address for something else.
The newsgroup comp.lang.ada is probably a better place for questions
like this than the Team-Ada mailing list.
Finally, the language is Ada, not ADA, after a woman who, having written
programs for Babbage's Analytical Engine, is considered the world's
"My mind is a raging torrent, flooded with rivulets of
thought, cascading into a waterfall of creative alternatives."