Redenumirea indicatorilor

Pentru a obține (citi) valoarea scrisă într-o anumită zonă de memorie menționată de pointer, utilizați operația de adresare indirectă sau de dereferențiere (*). Folosește numele indicatorului cu un asterisc înaintea lui:







lung dublu Num = 10;

lung dublu Flag;

lung dublu * ptr = &Num;

În practică, este utilizat pe scară largă un pointer așa-zis numit nul (tip void), care poate indica un obiect de orice tip. Pentru a accesa un obiect referit de pointerul gol, acesta trebuie mai întâi să fie distribuit la același tip cu obiectul însuși.

Luați în considerare un exemplu care ilustrează utilizarea unui pointer gol.

Int main ()

Int nNum = 9;

Void * ptr;

Accesați elementele matricei prin intermediul pointerilor







char * pArr = ArrayOfChar;

Prin redenumirea indicatorului pArr, puteți accesa conținutul lui ArrayOfChar [0]:

char Letter = * pArr;

Deoarece în C ++ indicii și matricele sunt strâns interconectate, crescând sau micșorând valoarea unui pointer la o matrice, programatorul poate accesa toate elementele matricei prin modificarea corespunzătoare a indicatorului:

// pArr puncte către ArrayOfChar [0] ('W')

// pArr indică lui ArrayOfChar [3] ('L')

// pArr indică lui ArrayOfChar [4] ("D")

char Letter = * pArr; // Scrisoare = 'D';

Astfel, după operațiile aritmetice, pointerul pArr se va referi la elementul matricei cu indexul 4.

Același element poate fi accesat într-un mod diferit:

Scrisoare = * (ArrayOfChar + 4);

// EquivalentLetter = ArrayOfChar [4];

Atribuirea valorilor unui tablou la valorile unui alt tablou al formularului Array [] = Alt [] sau Array = Alt este nevalid, deoarece compilatorul nu poate copia toate valorile dintr-un tablou la valorile altui. Pentru aceasta, programatorul trebuie să ia anumite acțiuni (atunci când accesează elementele prin index, cea mai comună este o alocare ciclică).







Trimiteți-le prietenilor: