Questo è probabilmente semplice, ma sto cercando di capire meglio i puntatori. Diciamo che ho una structC++ domanda puntatore da sforzo
struct Person{
char Name[20];
char ID[15];
char Address[50];
char Number[15];
};
e permette di dire che ho un po 'di questi memorizzato nella memoria come uno dopo l'altro. quindi ora dichiaro un nuovo puntatore alla struct.
struct Person *ptr;
Sarà questo puntatore inizio all'ingresso FIRST? (aka il primo "Nome") e quando lo iterate (aka ptr ++) andrà alla prossima STRUCT o alla successiva "voce" alias nome -> ID ---> Indirizzo
Quindi diciamo Im sulla prima voce per esempio ei dati sono:
Jason Adams
111222333
111 Fake Drive
55555551000
e la seconda voce è
Matt Johns
111555333
555 Derp lane
1000022434
ora iterare il ptr (ptr ++) sarà il punto ptr alla seconda struct (quello con opaco johns) o indicherà "ID" di Jason Adams
Spero che abbia senso?
Oh quindi se volessi passare alla voce successiva userò ptr + sizeof (Person)? o "sa" di andare alla seconda struttura quando si usa semplicemente ptr ++ –
No. Ogni volta che si aggiunge un valore integrale a un puntatore si moltiplica implicitamente il valore per 'sizeof ()'. Se aggiungi 1 a un puntatore (sia per 'ptr ++' o 'ptr + n'), avanza implicitamente" uno degli elementi puntati. " Se hai aggiunto 'sizeof (Person)' a un 'Person *', avanzava più di una voce. –
OH, grazie, grazie. questo è quello che pensavo fosse ma non era sicuro al 100%. –