Salve.
Tornano inevitabilmente i problemi coi stramaledettissimi puntatori in C++
Ragazzi vi prego di prestare attenzione al problema che vi sto per esporre, altrimenti non capireste i miei ragionamenti e le mie lacune.
Può sembrare lungo, ma in realtà sono io ignorante che faccio casini.
Ho questo codice:
La funzione func() richiede un int *p cioè il VALORE dell'oggetto al quale il puntatore sta puntando, ok?
Sotto, nel main, io faccio semplicemente func(pointer)
PERCHE'?
Se la funzione chiede il VALORE del puntatore (*p), allora PERCHE' gli mando l'indirizzo (pointer)?
Non dovrebbe essere func(*pointer)? La funzione chiede valore, gli mando il valore, no?
Ho questo codice
La funzione richiede un int &p cioè un VALORE. Solitamente, con le variabili NORMALI, il & indica che si vuole richiedere un indirizzo, ma siccome stiamo parlando di puntatori il simbolo & richiede il valore. Ok? Ci siamo.
NELLA FUNZIONE, io scrivo p = 100, mentre nel PROBLEMA 1 ho scritto *p = 100
Perchè nel PROBLEMA 1 ho dovuto omettere l'asterisco, e qui invece l'ho dovuto mettere?
UNA PROBABILE RISPOSTA potrebbe essere:
Nel PROBLEMA 1 hai chiesto nella funzione il valore del puntatore (*p) per poi cambiarlo (*p = 100)
Nel PROBLEMA 2 hai chiesto di nuovo il valore del puntatore (&p) per poi cambiarlo (p=100)
E' QUI CHE NON CAPISCO!
Mica il VALORE di un puntatore si cambia facendo p = 100? Stiamo parlando di VALORE non di INDIRIZZO!
Io sapevo che p è l'indirizzo e *p è il VALORE!
Grazie in anticipo!
Tornano inevitabilmente i problemi coi stramaledettissimi puntatori in C++
Ragazzi vi prego di prestare attenzione al problema che vi sto per esporre, altrimenti non capireste i miei ragionamenti e le mie lacune.
Può sembrare lungo, ma in realtà sono io ignorante che faccio casini.
PROBLEMA 1
Ho questo codice:
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
La funzione func() richiede un int *p cioè il VALORE dell'oggetto al quale il puntatore sta puntando, ok?
Sotto, nel main, io faccio semplicemente func(pointer)
PERCHE'?
Se la funzione chiede il VALORE del puntatore (*p), allora PERCHE' gli mando l'indirizzo (pointer)?
Non dovrebbe essere func(*pointer)? La funzione chiede valore, gli mando il valore, no?
PROBLEMA 2
Ho questo codice
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
La funzione richiede un int &p cioè un VALORE. Solitamente, con le variabili NORMALI, il & indica che si vuole richiedere un indirizzo, ma siccome stiamo parlando di puntatori il simbolo & richiede il valore. Ok? Ci siamo.
NELLA FUNZIONE, io scrivo p = 100, mentre nel PROBLEMA 1 ho scritto *p = 100
Perchè nel PROBLEMA 1 ho dovuto omettere l'asterisco, e qui invece l'ho dovuto mettere?
UNA PROBABILE RISPOSTA potrebbe essere:
Nel PROBLEMA 1 hai chiesto nella funzione il valore del puntatore (*p) per poi cambiarlo (*p = 100)
Nel PROBLEMA 2 hai chiesto di nuovo il valore del puntatore (&p) per poi cambiarlo (p=100)
E' QUI CHE NON CAPISCO!
Mica il VALORE di un puntatore si cambia facendo p = 100? Stiamo parlando di VALORE non di INDIRIZZO!
Io sapevo che p è l'indirizzo e *p è il VALORE!
PROBLEMA FINALE
Qual è la differenza fra i due codici? ._.
Qual è la differenza fra i due codici? ._.
Grazie in anticipo!
Ultima modifica: