Stavo studiando i riferimenti dei puntatori e ho trovato diversi modi per alimentare i parametri. Qualcuno può spiegare cosa significa in realtà ciascuno?Quando è il momento giusto per usare *, & o const in C++?
Penso che il primo sia semplice, è che x
è una copia del parametro immesso in modo che venga creata un'altra variabile nello stack. Per quanto riguarda gli altri, sono incompetente.
void doSomething1(int x){
//code
}
void doSomething2(int *x){
//code
}
void doSomething3(int &x){
//code
}
void doSomething3(int const &x){
//code
}
Vedo anche cose come questo quando vengono dichiarate le variabili. Non capisco le differenze tra loro. So che il primo inserirà 100
nella variabile nello stack. Non creerà un nuovo indirizzo o altro.
//example 1
int y = 100;
//example 2
int *y = 100;
//Example 3: epic confusion!
int *y = &z;
Domanda 1: come utilizzare questi metodi? Quando è più appropriato?
Domanda 2: Quando si dichiarano le variabili in questo modo?
Gli esempi sarebbero grandiosi.
P.S. questo è uno dei motivi principali per cui non ho imparato il C++ in quanto Java ha solo la garbage collection. Ma ora devo entrare in C++.
Vedere [questa risposta] (http://stackoverflow.com/questions/2139224/how-to-pass-objects-to-functions-in-c/2139254#2139254) per alcune regole empiriche su come passare i parametri alle funzioni in C++. – sbi
Buona discussione qui: http: // StackOverflow.it/questions/2550377/when-pass-by-pointer-is-preferred-to-pass-by-reference-in-c/2550405 # 2550405 –