Creare Librerie

lesto:

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.