Array problems. [Was: reply to GEORGE KRYKARISS]
George Kyriazis
kyriazis at pawl21.pawl.rpi.edu
Tue Feb 16 13:44:00 AEST 1988
In article <11829 at brl-adm.ARPA> kcfy at hp1.ccs.cornell.EDU (Oya Ekin) writes:
>
>GEORGE KYRIAZISSS writes ::
>
noooooo.... My name is George Kyriazis.. :-)
>> Hello world. I first found that peculiar behaviour trying to
>> write a computer graphics program involving points, lines and polygons.
>> Anyway, here it is:
>>
>> int (*lines)[2];
>> main() {}
>>
>>is a dummy program that just defines this data structure. What I actually
>>want is a pointer to arrays of 2 ints. I believe that int *lines[2] will
>>do the reverse, ie. give me two pointers to int.
>>Anyway, when I run it thru dbx on a SUN and ask 'whatis lines' I get this:
>>
>> int (*lines)[8196];
>>
>>As far as I know, this is a *BIG* mistake? Or am I wrong?
>>
>>
> I do not quite understand how you are going to use a declaration like
>the one you gave. BUT You are right ... I compiled this on Vax it
>gives me array[0..1] of (*lines) but I do not understand how you are
>going to use this even if it is declared correctly as in VAX.
>
>MAYBE you need something like :
>
>int *lines ;
>
>main()
>{
> lines = calloc(2*n,sizeof(int)) ;
>}
>
>to create arrays of 2 ints refernced as
> for example for a point :
> line[n] for x and line[n+1] for y ;
>
You are right, this thing will work.. Even defining a structure like
struct lines {int e1,e2} *lines;
will work. What I was thinking of doing was
lines=(int (*)[2])malloc(sizeof(int)*2*nelem);
so I can reference as lines[i][0] and lines[i][1]. (Don't worry about
the (int (*)[2]) casting... It works.. I have no idea why, but it does..)
But here there is a problem between debuggers.. I compiled it to a vax,
an iris 3130 workstation and an Balance 21000 and here is what I got:
On the VAX:
csv.rpi.edu 10% dbx
dbx version 3.21 of 6/5/86 16:40 (monet.Berkeley.EDU).
Type 'help' for help.
enter object file name (default is `a.out'):
reading symbolic information ...
(dbx) whatis lines
array[0..1] of int *lines;
(dbx)
On the iris:
iris.cs.rpi.edu 8% dbx
enter object file name (default is `a.out'):
dbx version 3.99 of 12/19/87 21:33.
Type 'help' for help.
reading symbolic information ...
(dbx) whatis lines
array[0..4294967295] of int *lines;
(dbx)
On the Sequent:
b21.cs.rpi.edu 8% dbx temp
dbx version 5.7 of 9/10/87 22:48 (Sequent).
Type 'help' for help.
reading symbolic information ...
(dbx) whatis lines
array[0..4294967295] of int *lines;
(dbx)
and finally on the SUN:
pawl10.pawl.rpi.edu 4% dbx temp
Reading symbolic information...
Read 51 symbols
(dbx) whatis lines
int (*lines)[8196];
(dbx)
I have no problem changing my data structure, but do we have a ?major?
dbx problem here?? I don't understand..
*******************************************************
*George C. Kyriazis * Gravity is a myth
*userfe0e at mts.rpi.edu or userfe0e at rpitsmts.bitnet * \ /
*Electrical and Computer Systems Engineering Dept. * \ /
*Rensselear Polytechnic Institute, Troy, NY 12180 * ||
******************************************************* Earth sucks.
More information about the Comp.lang.c
mailing list