From: mab@dst17.wdl.loral.com (Mark A Biggar)
Subject: Re: C++'s pointer vs Ada's Access type
Date: 1996/08/01
Date: 1996-08-01T00:00:00+00:00 [thread overview]
Message-ID: <4tqkns$o2u@wdl1.wdl.lmco.com> (raw)
In-Reply-To: DvFu6E.Atz.0.-s@inmet.camb.inmet.com
In article <DvFu6E.Atz.0.-s@inmet.camb.inmet.com> stt@henning.camb.inmet.com (johndoe) writes:
>Ding-yuan Sheu (dsheu@afit.af.mil) wrote:
>: I think C++'s pointer type is basically similar to Ada's access
>: type. Therefore, for the following C++ declaraction:
>: int* ip;
>: I convert it into Ada:
>: type Integer_Ptr is access all Integer;
>: ip : Integer_Ptr;
>: However, there comes a problem.
>: In C++, ip can be a pointer that points to a integer array.
>: Therefore, C++ programmers can do the following initialization:
>: int Array[100];
>: ip = &Array;
>: for (i:=0;i++,99) { (*ip+i) = 0; }
>: My question is how I can do the same thing in Ada by using ip
>: to initialize Array instead to directly initialize Array.
>This is somewhat odd looking C/C++ code. I would have expected:
> for (ip = Array; ip < &Array[100]; ) *ip++ = 0;
>In any case, the corresponding Ada would generally not use
>pointers at all:
> An_Array : array (1..100) of Integer;
>
> for I in An_Array'Range loop
> An_Array[I] := 0;
> end loop;
Or even more likely:
An_Array : array (1..100) of Integer := (1..100 => 0);
--
Mark Biggar
mab@wdl.lmco.com
>
>If you are intent on using a pointer, the following would work, though
>I can't imagine a case where it would be preferable to the above.
>
> type Int_Array is array(1..100) of Integer;
>
> type Array_Ptr is access all Int_Array;
> An_Array : aliased Int_Array;
> IP : Array_Ptr := An_Array'Access;
>
> for I in IP.all'Range loop
> IP.all[I] := 0;
> end loop;
>
> (both of the "IP.all" above could be shortened to simply "IP")
>
>: I know my question might be stupid for you Ada experts.
>: Your comments are preciou to me. Any Help will be appreciated.
>
>Generally pointers to arrays are not used very much in Ada.
>Pointers to records are used, when you are allocating objects on the heap.
>C/C++ programmers sometimes use pointers to perform manual "strength
>reduction" when manipulating arrays, but in Ada one generally
>just uses normal array indexing, while relying on the compiler to
>use pointer arithmetic at the machine level as appropriate.
>
>: Steven
>
>-Tucker Taft stt@inmet.com http://www.inmet.com/~stt/
>Intermetrics, Inc. Cambridge, MA USA
next prev parent reply other threads:[~1996-08-01 0:00 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
1996-07-31 0:00 C++'s pointer vs Ada's Access type Ding-yuan Sheu
1996-08-01 0:00 ` johndoe
1996-08-01 0:00 ` Mark A Biggar [this message]
1996-08-01 0:00 ` Bryce Bardin
1996-08-01 0:00 ` Fraser Wilson
1996-08-01 0:00 ` David Weller
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox