Pointer to Array of 10 NodeLists? OR Array that contains Pointers to 10 NodeLists Objects -


struct nodelist * headnodeptrlist;  headnodeptrlist= new nodelist[10];  

is above pointer array of 10 nodelists objects? or

array contains 10 pointers 10 nodelists objects

headnodeptrlist[list].headoflist=newnode; 

when try above works, if

headnodeptrlist[list] -> headoflist=newnode;  

base operand of ‘->’ has non-pointer type ‘nodelist’. understand saying thought top 2 lines created array of 10 nodelist pointers

struct nodelist * headnodeptrlist; headnodeptrlist = new nodelist[10]; 

is above pointer array of 10 nodelists objects? or array contains 10 pointers 10 nodelists objects

it none of them. headnodeptrlist a pointer location have reserved 10 * sizeof(nodelist) bytes of memory.

when accessing single element array, compiler takes base address of pointer headnodeptrlist , adds x times sizeof(nodelist) no address. here mean:

headnodeptrlist[4].int_member = 1234; 

is same as:

*(headnodeptrlist + 4 * sizeof(nodelist)).int_member = 1234; 

explaination:

a simple array my_array[3] of struct my_struct

struct my_struct {     int a;     int b; } 

will arranged in (example) memory:

| memory address | reserved                                     | ---------------------------------------------------------------------     0x0000           my_array[0].a , my_array pointing @     0x0004           my_array[0].b     0x0008           my_array[1].a     0x000c           my_array[1].b     0x0010           my_array[2].a     0x0014           my_array[2].b 

as access e.g. my_array[1].b compiler create address reads address my_array + 1 * sizeof(my_struct) + offsetof(my_struct, b) offsetof() macro delivers offset of struct member b inside struct my_struct.


the error

base operand of ‘->’ has non-pointer type ‘nodelist’ 

means what's left of -> not pointer. in fact dereference pointer headnodeptrlist brackets [].

headnodeptrlist[list] -> headoflist = newnode;  

should be

headnodeptrlist[index].headoflist = newnode;  

btw: don't chose name list index variable! name them index or indexlist or ..


Comments

Popular posts from this blog

javascript - how to protect a flash video from refresh? -

android - Associate same looper with different threads -

visual studio 2010 - Connect to informix database windows form application -