La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Puntatori Linguaggio C. Puntatori in C Un puntatore è una variabile che contiene un indirizzo di memoria. Quando una variabile contiene lindirizzo di.

Presentazioni simili


Presentazione sul tema: "Puntatori Linguaggio C. Puntatori in C Un puntatore è una variabile che contiene un indirizzo di memoria. Quando una variabile contiene lindirizzo di."— Transcript della presentazione:

1 Puntatori Linguaggio C

2 Puntatori in C Un puntatore è una variabile che contiene un indirizzo di memoria. Quando una variabile contiene lindirizzo di unaltra variabile, si dice che la prima punta alla seconda. Utilità dei puntatori: Nelle funzioni (passaggio per referenza, che permette la modifica degli argomenti in input); Per lallocazione dinamica della memoria (definizione di strutture dati di dimensione variabile)

3 Definizione e operazioni sui puntatori Dichiarazione e definizione di un puntatore che punta a una locazione di memoria contenenti un certo tipo di dato: tipo *nome_variabile es. int *x; char *y; & (operatore unario che restituisce lindirizzo di memoria delloperando) Es. se la variabile n è allocata allindirizzo Dopo lesecuzione dellistruzione: x=&n il valore di x è 1200.

4 Operatori * (operatore unario che restituisce il valore della locazione di memoria puntata dalloperando). Es. se la variabile x ha come valore 1200, e la locazione 1200 contiene il valore 555. Dopo lesecuzione dellistruzione: y=*x; Il valore di y è 555. I puntatori possono essere confrontati tra di loro * è il complemento di &. void main(void){ int x,y; int *p; è equivalente a y=x; p=&x; } y=*p; }

5 Allocazione dinamica della memoria malloc() alloca porzioni contigue di memoria e restituisce lindirizzo della locazione iniziale void *malloc(numero di byte) free() libera porzioni di memoria void free(void *p) Es. char *p; p=malloc(1000); alloca 1000 byte in sequenza e p punta alla locazione iniziale. La zona di memoria allocata attraverso malloc si trova in un'area di memoria speciale, detta heap (memoria dinamica).

6 NULL La costante NULL è di tipo void* (quindi compatibile con tutti i tipi puntatore) indica un puntatore che non punta a nulla: non può essere dereferenziato

7 Esempio – vettore dinamico int main (){ int dimesione,i; int *vet; //sarà larray dinamico printf(Dimensione dellarray da allocare?"); scanf("%d",&dimensione); vet=malloc(dimensione*sizeof(int)); // allocazione del vettore // esempio di inserimento valori for(i=0;i",i); scanf("%d",&vet[i]); } return 0; }

8 Puntatori a strutture Esempio di struttura: struct punto { double x; double y; }; struct punto p1; struct punto *pun; pun=&p1; Notazione errata *p1.x=5; Notazione corretta (*p1).x=5; Notazione migliore p1->x=5;


Scaricare ppt "Puntatori Linguaggio C. Puntatori in C Un puntatore è una variabile che contiene un indirizzo di memoria. Quando una variabile contiene lindirizzo di."

Presentazioni simili


Annunci Google