Voglia di Mac , anche su Facebook

Voglia di Mac , anche su Facebook
Diventa membro di iBlog anche su Facebook!
Powered By Blogger

Qui iSpazio con il Feed su iPod Touch, iPad Italia e recensioni App Store.

Benvenuto in iBlog!

Benvenuto in iBlog , 

iBlog è un blog per interessi di  Mac OS X e anche iPhone OS ,  se se hai interessi da da condividere sul blog , scrivi un ' articolo e poi noi lo inseriremo su iBlog!

Pagine

mercoledì 4 agosto 2010

Avanzate di linguaggio C- parte 1: Introduzione all' uso dei puntatori

Salve rieccoci qui per parlare di C ma questa volta da un punto di vista superiore iniziando a introdurre il concetto di puntatore che durerà molto perchè è un grosso concetto che va digerito poco per volta e sarebbe inutile scrivere tutto subito sarebbe suicida quindi ho già porzionato il giusto per ogni articolo.
Ma ora iniziamo a parlare dei puntatori.
Che cos' è un puntatore?
Un puntatore è una variabile che rappresenta un indirizzo di memoria
A che può servire?
Beh...serve tantissimo visto che modificano il valore della variabile a cui puntano senza usare nuova memoria per salvare il risultato e vi assicuro che se fate 1000 calcoli su interi salvare 4000 byte di spazio è molto meglio di usare per salvare nuovi risultati!
Ecco un argomentazione valida per usarli...
Ma come si dichiara e si usa?
Semplice si fa così
(tipo) * (nome del puntatore)
ESEMPIO int * x significa che ho detto che ci sarà un puntatore intero di nome x.
Ora ci chiediamo a che cosa lo facciamo puntare?
Ad una variabile che ha un indirizzo di memoria visto che il puntatore non viene salvato in memoria (ed ecco altro risparmio sulla memoria) e si fa nel seguente modo
(nome puntatore) = & (nome variabile)
ESEMPIO (int b) x= & b detto che b è intero x lo può puntare, facile no?
Ora credo che gradiate un esempio quindi eccolo qua:
1 int a=100, b=50 , *p;
(NOTATE CHE posso dichiarare variabili e puntatori assieme)
2 p= &a
(ORA p punta a d a variabile)
3 int c= *p
(ATTENTI con * posso anche dare ad una variabile il valore puntato dal puntatore così, quindi c = valore a = 100)
4 p = &b
(Cambio il posto su cui puntare)
5 int f = *p + 10
(f vale b+10 perchè p ORA punta b)
6 *p=*p+5
(ATTENTI così modifico p si ma anche b!!! Ora b vale 55!!!!)
7 int *q= &a
(SI può inizializzare e dichiarare assieme)
8 int d = *p * *q
(Provate e ricavare il valore di d o con la logica o scrivendo del codice di contorno che potete creare da soli)

Tutto qui.
Facile vero? Se volete sapere che fa 8 fatemelo sapere e io pubblico la soluzione....
Bene ultima stuzzicante possibilità: Sapere a che indirizzo sta la variabile puntata da b con qst riga di codice
printf("b=%d , indirizzo: %p\n", b, &b)
Sarà un numero esadecimale ovvero in base 16 e niente paura se viene "19BF" visto che oltre le cifre 1-9 ci sta A=10,B=11,C=12,D=13,E=14,F=15.
Bene per ora è veramente tutto alla prossima per sapere ancora dei puntatori.
Luca



Nessun commento:

Posta un commento