Grazie![]()
Grazie![]()
Ciao
Un indirizzo è una specie di "indice" che identifica una locazione di memoria, un puntatore è un "qualcosa" che punta a una locazione di memoria.
Esempio:
Spero di non aver fatto errori.. (altrimenti..codice:int k = f; int * p = NULL; // Questo è un puntatore che punta a NULL p = &k; // Ora il puntatore punta all'indirizzo della variabile k, ovvero alla posizione nella memoria dove il valore di k si trova. per accedere al valore di k bisogna fare *p)
![]()
l'indirizzo di una variabile o di un oggetto in generale è l'indirizzo di memoria dove effettivamente l'oggetto è allocato in memoria.
un puntatore è una variabile e il suo contenuto è un indirizzo, dopo essere stato inizializzato, punta alla prima locazione dell'oggetto cui esso punta.
quindi un puntatore ha un prorpio indirizzo che è l'area in cui è allocato e il suo valore è un riverimento ad un'altra area di memoria.
altri chiarimenti?
vuoi un esempio?
Spero di essermi spiegato abbastanza.
PS: se vuoi creati un esempio allocando una variabile e un puntatore che punta alla variabile, assegna un valore alla variabile e poi stampa a video:
il contenuto della variabile e l'indirizzo
il valore dell'oggetto puntato dal puntatore e il valore del puntatore e l'indirizzo del puntatore.
noterai che il valore del puntatore è uguale all'indirizzo della variabile allocata in precedenza.
Spero di non essermi sbagliato... a quest'ora il sonno, la neve e l'alcool hanno strani effetti collaterali.
31-01-2003 23:01
SONNO E ALCOOL!?!? A quest'ora i neonati fanno l'ultima poppata! :gren:
Ma LOL!
Scusate ma non resistevo..![]()
Per esempio se ho:
int* c;
int s = 8;
c = &s;
cout<< c; //<-- che valore stampera c? 8 o il valore dell'indirizzo di c?
se ho invece:
int ciao = 4;
funzione(ciao);
//accedo alla funzione
void funzione(&ciao);
[
ciao = 40; //ora ciao avra il vaolre di 40 non piu di 4 o sara
//spostato all'indirizzo di memoria 40? Perche la funzione
//riceve come argomento l'indirizzo non era lo stesso se
//riceveva un puntatore alla variabile ciao cioe void funzione(*ciao);?
]
nessuno puo aiutarmi?
Stamperai l'indirizzo di memoria di s, infatti '&' rappresenta l'indirizzo, '&s' l'indirizzo di s, che tu hai affidato a c con 'c=&s'; per stampare invece 8, devi scrivere:Originariamente inviato da gif
Per esempio se ho:
int* c;
int s = 8;
c = &s;
cout<< c; //<-- che valore stampera c? 8 o il valore dell'indirizzo di c?
cout<< *c;
che stampa il valore presente nell'indirizzo di memoria affidato a c (&s appunto).
Se passi per indirizzo, ora ciao vale 40, perchè ne hai modificato il valore, non l'indirizzo; in pratica con il passaggio per indirizzo, il ciao della funzione è solo un collegamento al ciao del main, se lo cambi nella funzione, cambia anche nel main.se ho invece:
int ciao = 4;
funzione(ciao);
//accedo alla funzione
void funzione(&ciao);
[
ciao = 40; //ora ciao avra il vaolre di 40 non piu di 4 o sara
//spostato all'indirizzo di memoria 40? Perche la funzione
//riceve come argomento l'indirizzo non era lo stesso se
//riceveva un puntatore alla variabile ciao cioe void funzione(*ciao);?
]
Sì, puoi anche passargliela come puntatore in questo modo:
void funzione(int* ciao);
![]()
Debian GNU/Linux sid
Publishing a theory should not be the end of one's conversation with the universe, but the beginning. (Eric S. Raymond)
Kernel 2.6.14-ck1
come hai detto passando l'indirizzo ora avro un collegamento al ciao della main. ma se volevo cambiare il valore contenuto in ciao non era lo stesso, quindi al posto di passare il parametro come indirizzo, passarlo semplicemente come puntatore? in questo modo non sia ha lo stesso risultato?:Originariamente inviato da Kamui
Se passi per indirizzo, ora ciao vale 40, perchè ne hai modificato il valore, non l'indirizzo; in pratica con il passaggio per indirizzo, il ciao della funzione è solo un collegamento al ciao del main, se lo cambi nella funzione, cambia anche nel main.
Sì, puoi anche passargliela come puntatore in questo modo:
void funzione(int* ciao);
int ciao = 4;
funzione(ciao);
//accedo alla funzione
void funzione(*ciao);
[
ciao = 40;
]
Sì, ma ricordati di scrivere anche il tipo di variabile a cui punta:
void funzione(int *ciao);
[
ciao = 40;
]
Debian GNU/Linux sid
Publishing a theory should not be the end of one's conversation with the universe, but the beginning. (Eric S. Raymond)
Kernel 2.6.14-ck1
Si gia.![]()
Ma il punto e questo, quindi tanto passare l'indirizzo di una variabile, tanto passargli un puntatore ad essa il risultato e lo steso?