Il C++ ha introdotto
il passaggio di puntatori come parametri c'è anche in C
Certo, ciò che non c'è in C ANSI è il passaggio di parametri per rifermento o alias, cioè la seguente riga
è un errore:
myFunc(const int &nameVar) {
}
Mentre è valida per C++.
* serve per memorizzare il valore della variabile puntata
& serve per memorizzare l'indirizzo della variabile puntata
La confusione come ho già scritto prima deriva dal fatto che * e & svolgono compiti differenti in base a come e dove vengono scritti. & Ricava l'indirizzo di una variabile, oppure se usato nella lista dei parametri specifica il passaggio per riferimento o alias, che ti permette di accedere alla variabile da dentro la funzione.
La stessa cosa si può fare con i puntatori, ma per accedere alla variabile puntata devi anteporre *, operatore di risoluzione.
La cosa è molto semplice, quasi banale, tuttavia io compreso mi confondevo.
Come faccio a ricavare l'indirizzo di una variabile?
Uso l'operatore &. es: int *intPtr = &intVar;
Da destra verso sinistra: intVar è una variabile da cui ricavo l'indirizzo che assegno a intPtr che è un puntatore a tipo intero. PS: intPtr è anche una variabile per cui posso ricavare l'indirizzo di intPtr: &intPtr
Come faccio a passare un argomento per riferimento?
Uso l'operatore &
Da dentro la funzione come uso l'argomento passato per riferimento?
Nel modo normale di usare una variabile.
Come ricavo il valore da una variabile puntatore?
Uso * prima della variabile puntatore, per ricavare (leggere) il contenuto della cella di memoria.
Una cella di memoria ha due proprietà:
1) L'indirizzo della cella
2) Il dato conservato nella cella.
Ciao.