Ho una matrice di strutture, assegnata dinamicamente. Un puntatore a questo array viene passato ad altre funzioni.Accesso all'elemento -1 di una matrice in c
struct body{
char* name;
double mass;
// ... some more stuff
};
body *bodies = malloc(Number_of_bodies*sizeof(body));
Ho bisogno di conoscere la dimensione della matrice, quindi sto memorizzare la dimensione in uno dei struct, che è nell'elemento 0th della matrice (il primo struct).
bodies[0].mass = (double)Number_of_bodies;
Ho poi tornare dalla funzione un puntatore al primo elemento dell'array cioè bodies[1]
return (bodies+1);
Ora, quando uso questo puntatore in altre funzioni, i dati dovrebbero iniziare in corrispondenza dell'elemento 0th .
body *new_bodies = (bodies+1); //Just trying to show what happens effectively when i pass to another function
new_bodies[0] = *(bodies+1); //I Think
Se voglio vedere lo struct iniziale, che era a bodies[0]
, vuol dire che in altre funzioni devo accedere new_bodies[-1]
?
È qualcosa che posso fare? Come posso accedere alla struttura iniziale?
Sì. Sicuro. Perchè no? 'a [b]' è definito come '* (a + b)'. – Deduplicator
Strettamente correlato a [Negative array indexes in C?] (Http://stackoverflow.com/q/3473675/1708801) –