CATEGORII DOCUMENTE |
POINTERI
Un pointer este o variabila care pastreaza adresa unui obiect de tip corespunzator. Forma generala pentru declararea unei variabile pointer este:
tip * nume_variabila;
unde tip poate fi oricare din tipurile de baza admise in C, iar nume_variabila este numele variabilei pointer. Tipul de baza al pointerului defineste tipul variabilelor spre care indica pointerul.
Variabila pointer este o variabila de un tip special, aparte de tipurile char, int, float. Cuvantul cheie tip din declaratia unui pointer se refera la tipul de data spre care indica pointerul, nu la formatul in care se stocheaza efectiv o variabila pointer in memorie. Formatul in care se stocheaza o variabila pointer in memorie depinde de tipul de compilator care se foloseste, deci depinde in mare masura de tipul procesorului pentru care a fost proiectat compilatorul. O indicatie despre formatul in care se stocheaza o variabila pointer in memorie poate fi obtinuta prin tiparirea continutului unei variabile pointer (o adresa) utilizand printf() cu formatul %p.
Exemplu:
char *p; /* pointer la caracter */
int *temps, *start; /* pointeri la intregi */
char *const q; /* pointer constant la caracter */
7.1. Operatori pointer
Exista doi operatori pointer speciali * si &:
Operatorul & este un operator unar care ofera (returneaza) adresa unei variabile (adresa operandului sau).
Operatorul * este complementarul lui &. Este un operator unar care returneaza valoarea variabilei plasata la adresa care urmeaza dupa acest operator.
Exemplu:
# include <stdio.h>
void main (void)
Spre exemplu, sa consideram portiunea de program:
short i, j; // i si j sunt ambele intregi scurti
short *p // p este pointer la tip intreg scurt
i = 123;
p = &i;
j = *p;
Sa presupunem ca zona de stocare a celor trei variabile arata astfel:
Dupa primele doua atribuiri
i = 123;
p = &i;
zona de stocare va arata astfel:
Continutul variabilei p (de tip pointer) va fi valoarea 1200, adica adresa variabilei i.
Instructiunea j = *p; copiaza un intreg scurt de la locatia 1200 in j, locatiile de memorie fiind acum ca cele din figura:
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 728
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved