17.04.2013 Views

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Variabile pointer<br />

8. Tipuri pointer <strong>în</strong> C<br />

O variabilã pointer poate avea ca valori adrese de memorie. Aceste adrese pot fi:<br />

- Adresa unei valori de un anumit tip (pointer la date)<br />

- Adresa unei functii (pointer la o functie)<br />

- Adresa unei zone cu continut necunoscut (pointer la void).<br />

Cel mai frecvent se folosesc pointeri la date.<br />

Existã o singurã constantã de tip pointer, cu numele NULL (valoare zero) si care<br />

este compatibilã la atribuire si comparare cu orice tip pointer. Totusi, se poate atribui<br />

o constantã <strong>în</strong>treagã convertitã la un tip pointer unei variabile pointer. Exemplu:<br />

char * p = (char*)10000; // o adresa de memorie<br />

Desi adresele de memorie sunt de multe ori numere <strong>în</strong>tregi pozitive, tipurile pointer<br />

sunt diferite de tipurile <strong>în</strong>tregi si au utilizãri diferite.<br />

In <strong>limbajul</strong> C tipurile pointer se folosesc <strong>în</strong> principal pentru:<br />

- Declararea si utilizarea de vectori, mai ales pentru vectori ce contin siruri de<br />

caractere.<br />

- Argumente de functii prin care se transmit rezultate (adresele unor variabile din<br />

afara functiei).<br />

- Acces la date alocate dinamic si care nu pot fi adresate printr-un nume.<br />

- Argumente de functii prin care se transmite adresa unei alte functii.<br />

Declararea unei variabile (sau argument formal) de un tip pointer include<br />

declararea tipului datelor (sau functiei) la care se referã acel pointer. Sintaxa declarãrii<br />

unui pointer la o valoare de tipul “tip” este<br />

tip * ptr; // sau tip* ptr; sau tip *ptr;<br />

Exemple de variabile si argumente pointer:<br />

char * pc; // pc= adresa unui caracter sau sir de car.<br />

int * pi; // pi= adresa unui intreg sau vector de int<br />

void * p; // p= adresa de memorie<br />

int * * pp; // pp= adresa unui pointer la un intreg<br />

int strlen (char* str); // str=adr. unui sir de caractere<br />

Atunci când se declarã mai multe variabile pointer de acelasi tip, nu trebuie omis<br />

asteriscul care aratã ca este un pointer. Exemple:<br />

int *p, m; // m de tip "int", p de tip "int*"<br />

int *a, *b ; // a si b de tip pointer

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!