Ho visto qualcuno che utilizza questoCosa significa const int * & var?
void methodA(const int*& var);
in una risposta, ma non riuscivo a capire che cosa significa l'argomento.
AFAIK:
const int var
=> valore const che non può essere modificatoconst int* var
=> puntatore a int che è const ie * var non può essere cambiato, ma var può essere cambiatoconst int& var
=> riferimento const int ovvero valore di var non può essere modificato
Che cosa significa const int*& var
, ed è anche const int& *var
possibile?
Potete per favore dare qualche esempio, come cosa si può fare e cosa non si può fare con esso?
UPDATE:
Non sono sicuro se sto pensando modo giusto, ma ho cominciato a pensare di riferimento come alias della variabile che era passata come argomento, in modo da const int * p; Methoda (p) => qui stiamo passando p come const int *, ma non sappiamo se questo è passaggio per valore o quello che fino a quando vediamo la definizione di metodo A,
quindi se Methoda è così Methoda (const int * & p2) ==> qui p2 è un altro nome per p, cioè p e p2 sono gli stessi di adesso e se methodA (const int * p2) ==> qui p2 viene passato come valore cioè p2 è solo locale a questo metodo,
per favore correggimi se sto pensando in modo sbagliato? Se sì, potrei aver bisogno di studiarne un altro? Puoi per favore indicare delle belle referenze?
UPDATE 2 Se qualche principiante come me vogliono sapere di più su questa cosa, è possibile utilizzare C++ decl/programma cdecl, che ho appena scoperto di molto utile da here
$ c++decl
Type `help' or `?' for help
c++decl> explain const int&* p
declare p as pointer to reference to const int
c++decl> explain const int*& p
declare p as reference to pointer to const int
Ma come indicato da tutti qui, il primo esempio non è legale in C++.
Grazie
nel terzo metodo baz, ConstIntPointer == const int * var, come è questo passaggio per valore, c'è il puntatore coinvolto ?? Sono confuso ora. –
I puntatori prendono spazio da soli. I puntatori sono variabili che memorizzano l'indirizzo di un'altra variabile. Copierà quel valore, lo sposterà nello stack e chiamerà quella funzione. – GManNickG
Si sta passando il valore memorizzato nel puntatore (ad esempio l'indirizzo di memoria). –