Indicatori, adrese și variabile

Să luăm în considerare încă un fragment al programului:

intVariable = 5;

int * pPointer = theVariable;

Fig. 8.3. Schema de alocare a memoriei

Accesarea datelor prin intermediul indicatorilor







Listing 8.2. Accesarea datelor prin intermediul indicatorilor

1: // Listing 8.2. Folosind indicatorii

5: typedef nesemnate scurte int USHORT;

8: USHORT myAge; // variabilă

9: USHORT * pAge = 0; // pointer

11: cout <<"myAge: " <

12: pAge = &myAge; / / puneți în adresa pAge myAge

13: cout <<"*pAge: " <<*pAge <<"\n\n";

14: cout <<"*pAge = 7\n";

15: * pAge = 7; // atribuiți myAge la 7

16: cout <<"*pAge: " <<*pAge <<"\n";

17: cout <<"myAge: " <

18: cout <<"myAge = 9\n";

20: cout <<"myAge: " <

21: cout <<"*pAge: " <<*pAge <<"\n";

Analiză: În program sunt declarate două variabile: myAge de tip nesemnat scurt și pAge, care este un indicator pentru acest tip. În linia 10, variabila pAge este setată la 5, iar pe linia 11 această valoare este afișată.

În linia 19, valoarea lui myAge se modifică din nou. Acum, la această variabilă i se atribuie numărul 9. Apoi, pe liniile 20 și 21 se face referire la această valoare direct (prin intermediul unei variabile) și prin dereferențierea indicelui la ea.







Listing 8.3. Ce este scris în index?

1: // Listing 8.3. Ce este stocat în index?

3: #include

8: nesemnate scurte int myAge = 5, yourAge = 10;

9: nesemnate scurte int * pAge = &myAge; // Index

10: cout <<"myAge:\t" <

11: cout <<"&myAge:\t" <<&myAge <<"\t&yourAge;\t" <<&yourAge <<"\n";

12: cout <<"pAge;\t" <

13: cout <<"*pAge:\t" <<*pAge <<"\n";

14: pAge = &yourAge; // Reassign the pointer

15: cout <<"myAge:\t" <

16: cout <<"&myAge:\t" <<&myAge <<"\t&yourAge:\t" <<&yourAge <<"\n";

17: cout <<"pAge:\t" <

18: cout <<"*pAge:\t" <<*pAge <<"\n";

19: cout <<"&pAge:\t" <<&pAge <<"\n";

myAge: 5 yourAge: 10

myAge: 0x355C yourAge: 0x355E

myAge: 5 yourAge: 10

myAge: 0x355C yourAge: 0x355E

(Rezultatele dvs. pot varia.)

Pentru a declara un pointer, notați tipul variabilei sau obiectului la care se va referi mai întâi acest pointer, apoi puneți asteriscul (*), urmat de numele pointerului nou, de exemplu:

nesemnate scurte int * pPointer = 0;

nesemnate scurte intVariable = 5;

nesemnate scurte int * pPointer = theVariable;

Pentru a dereference un pointer, setați operatorul de dereferencing (*) înainte de numele său:

nesemnate scurte intValue = * pPointer

Pentru ce sunt indicii?

• pentru plasarea datelor în zonele de memorie libere și accesul la acestea;

• accesarea variabilelor și a funcțiilor de clasă;

• pentru transmiterea parametrilor către funcții prin referință.

Restul capitolului este dedicat gestionării dinamice a datelor și operațiilor cu variabile și funcții de clasă.







Articole similare

Trimiteți-le prietenilor: