Pointerele C

Pointerele sunt caracteristici puternice ale programării C și C ++. Înainte de a învăța indicatori, să aflăm despre adresele din programarea C.

Adresa în C

Dacă aveți o variabilă var în program, &var vă va oferi adresa sa în memorie.

Am folosit adresa de mai multe ori în timp ce folosim funcția scanf().

Aici, valoarea introdusă de utilizator este stocată în adresa variabilei var. Să luăm un exemplu de lucru.

Ieșire

var: 5 address of var: 2686778

Notă: probabil că veți obține o adresă diferită atunci când rulați codul de mai sus.

C Pointerele

Pointerele (variabilele de pointer) sunt variabile speciale care sunt folosite pentru a stoca adrese mai degrabă decât valori.

Sintaxa pointerului

Iată cum putem declara pointeri.

Aici am declarat un indicator p de tip int.

Tu poate, de asemenea, să declare indicii în aceste moduri.

Să luăm un alt exemplu de declarare a pointerilor.

Aici am declarat un indicator p1 și o variabilă normală p2.

Atribuirea adreselor către indicatoare

Să luăm un exemplu.

Aici, 5 este atribuit variabilei c. Și, adresa lui c este atribuită indicatorului calculatorului.

Obțineți valoarea lucrului indicat de indicatori

Pentru a obține valoarea lucrului indicat de indicatori, folosim * operator. De exemplu:

Aici, adresa c este atribuită indicatorului PC. Pentru a obține valoarea stocată în acea adresă, am folosit * pc.

Notă: În exemplul de mai sus, pc este un pointer, nu *pc. Nu puteți și nu trebuie să faceți ceva de genul *pc = &c;

Apropo, * se numește operator de dereferență ( atunci când se lucrează cu indicii). Funcționează pe un pointer și oferă valoarea stocată în acel pointer.

Modificarea valorii indicate de indicatori

Să luăm un exemplu.

Am atribuit adresa lui c pointerului computerului.

Apoi, am schimbat valoarea lui c la 1. Din moment ce pc și adresa lui c este la fel, *pc ne oferă 1.

Să luăm un alt exemplu.

Am atribuit adresa lui c indicatorului computerului.

Apoi, am schimbat *pc la 1 folosind *pc = 1;. Deoarece pc și adresa lui c sunt aceleași, c va fi egal cu 1.

Să luăm „un alt exemplu.

Inițial, adresa c este atribuită indicatorului calculatorului folosind pc = &c;. Deoarece c este 5, *pc ne oferă 5.

Apoi, adresa lui d este alocată indicatorului calculatorului folosind pc = &d;. Deoarece d este -15, *pc ne oferă -15 .

Exemplu: Lucrul indicatoarelor

Să luăm un exemplu de lucru.

Ieșire

Address of c: 2686784Value of c: 22Address of pointer pc: 2686784Content of pointer pc: 22Address of pointer pc: 2686784Content of pointer pc: 11Address of c: 2686784Value of c: 2

Explicația programului

  1. int* pc, c;

    Aici , este creat un pointer pc și o variabilă normală c, ambele de tip int.
    Deoarece computerul și c nu sunt inițializate inițial, pointer pc indică fie către nici o adresă sau o adresă aleatorie. Și variabila c are o adresă, dar conține o valoare aleatorie a gunoiului.
  2. c = 22;

    Aceasta atribuie 22 variabilei c. Adică, 22 este stocat în locația de memorie a variabilei c.
  3. pc = &c;

    Aceasta atribuie adresa variabilei c indicatorului computerului.
  4. c = 11;

    Aceasta atribuie 11 variabilei c.
  5. *pc = 2;

    Aceasta schimbă valoarea la locația de memorie indicată de indicatorul PC la 2.

Greșeli frecvente atunci când lucrați cu indicatori

Să presupunem că doriți ca indicatorul PC să indicați adresa c. Apoi,

Iată un exemplu de sintaxă a indicatorului pentru începători care adesea consideră confuz.

De ce nu am primit o eroare când folosind int *p = &c;?

Este „pentru că

este echivalent cu

În ambele cazuri, creăm un pointer p (nu *p) și atribuirea &c acestuia.

Pentru a evita această confuzie, putem folosi afirmația astfel:

Acum știi ce sunt indicii, vei afla cum indicii sunt legate de matrici în următorul tutorial.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *