• Non ci sono risultati.

Dispensa II.7

N/A
N/A
Protected

Academic year: 2021

Condividi "Dispensa II.7"

Copied!
4
0
0

Testo completo

(1)

Dispensa di Informatica – II.7

Dispensa II.7 versione 1.0 mail: lamonica@associatesonline.it Pagina 1 di 4

I PUNTATORI

La dispensa di seguito proposta si pone come tutorial per poter porre le basi per la programmazione dei puntatori in C.

Le Variabili

Il linguaggio C è un linguaggio fortemente tipizzato. TUTTE le variabili per essere utilizzate devono essere dichiarate e ne deve essere esplicitamente dichiarato il tipo.

Di seguito la somma di due numeri utilizzando due variabili del TIPO intero:

#include <stdio.h>

main(){

int j,i,k;

j = 3;

i = 4;

k = i + j;

printf("k = %d \n",k);

} Le variabili vengono:

• Le variabili i,j,k vengono dichiarate (vedi riga rossa)

• Le variabili i,j vengono riempite con i valori 3 e 4 (vedi riga verde)

• La variabile k assume il valore somma di i e j (3 + 4 = 7) (vedi riga blu)

• Stampo a video quanto è contenuto nella variabile k (vedi riga gialla)

Quello che accade in memoria è che il processore ‘nomina’ tre locazioni di memoria centrale dandogli i nomi i,j,k. (la locazione di memoria è una cella di memoria dotata di indirizzo e di valore)

INDIRIZZO VALORE

(2)

Dispensa di Informatica – II.7

Dispensa II.7 versione 1.0 mail: lamonica@associatesonline.it Pagina 2 di 4

AAAA 4  I

AAAB 3  J

AAAC 7  K

AAAD AAAA  P

Fig. 1

(3)

Dispensa di Informatica – II.7

Dispensa II.7 versione 1.0 mail: lamonica@associatesonline.it Pagina 3 di 4

I puntatori

La variabile I ha indirizzo AAAA e contiene il valore 4.

E possibile definire una variabile p che contenga l’indirizzo della variabile I.

Ad esempio la variabile P contiene l’indirizzo della variabile I.

I puntatori sono delle variabili “speciali”, in quanto non hanno un loro proprio valore, ma “puntano alla locazione di memoria di un’altra variabili”

Per dichiarare una variabile puntatore ad intero utilizzeremo il simbolo *;

Per indicare l’indirizzo di una variabile si utilizza il simbolo &;

Per indicare il valore assunto da un indirizzo si utilizza il simbolo *;

ad esempio mentre n sarà una variabile che conterrà un numero intero, p è dichiarata come una variabile puntatore ad intero; cioè una variabile che conterrà l’indirizzo di una altra variabile di tipo intero.

int n;

int * p;

con la riga seguente p assume il valore dell’indirizzo della variabile n;

p = &n; (e dunque seguendo la fig.1 p diviene AAAA)

con la riga seguente J assume il valore della variabile il cui indirizzo è p;

j = *p ; (e dunque seguendo la fig.1 la variabile j assume il valore 4, che è il valore dell’indirizzo AAAA)

(4)

Dispensa di Informatica – II.7

Dispensa II.7 versione 1.0 mail: lamonica@associatesonline.it Pagina 4 di 4

Esempio

#include <stdio.h>

main(){

int* n;

int p;

p=20;

n = &p;

printf("il valore puntato da n vale = %d \n",*n);

}

Nell’esempio sopra indicato si dichiarano due variabili.

n è una variabile puntatore p è una variabile intero p assume il valore 20

n assume come valore l’indirizzo di p (&p significa l’indirizzo della variabile p)

il valore puntato da n (*n significa il valore all’indirizzo contenuto nella variabile n) vale 20

Riferimenti

Documenti correlati

Evidentemente, affinch´ e tale grafico sia incontrato in un solo punto dalle predette parallele all’asse x, occorre e basta che, mentre x descrive l’intervallo [a, b], y

Infatti agli elementi distinti del condominio +y e −y corrisponde lo stesso valore di x e ci` o ` e in contraddizione con la definizione di funzione, la quale richiede che ad

Moltiplicare o dividere un vettore per uno scalare equivale a moltiplicare o dividere il modulo del vettore, lasciando invariata la direzione ed il

[r]

ƒ restituisce un puntatore che contiene l’indirizzo del blocco di memoria allocato, cioè della variabile, la quale sarà quindi accessibile dereferenziando il puntatore. ƒ la

Un puntatore ` e una variabile che contiene l’indirizzo in memoria di un’altra variabile (del tipo dichiarato).. Esempio: dichiarazione

[r]

laser di superfici per la resistenza alla cavitazione erosione 84