Estaba estudiando referencias de punteros y encontré diferentes formas de introducir parámetros. ¿Alguien puede explicar lo que realmente significa cada uno?¿Cuándo es el momento adecuado para usar *, & o const en C++?
Creo que el primero es simple, es que x
es una copia del parámetro ingresado para que se cree otra variable en la pila. En cuanto a los demás, no tengo ni idea.
void doSomething1(int x){
//code
}
void doSomething2(int *x){
//code
}
void doSomething3(int &x){
//code
}
void doSomething3(int const &x){
//code
}
También veo cosas como esta cuando se declaran las variables. No entiendo las diferencias entre ellos. Sé que el primero pondrá 100
en la variable y
en la pila. No creará una nueva dirección ni nada.
//example 1
int y = 100;
//example 2
int *y = 100;
//Example 3: epic confusion!
int *y = &z;
Pregunta 1: ¿Cómo uso estos métodos? ¿Cuándo es más apropiado?
Pregunta 2: ¿Cuándo declaro las variables de esa manera?
Ejemplos serían geniales.
P.S. esta es una de las razones principales por las que no aprendí C++ ya que Java solo tiene recolección de basura. Pero ahora tengo que entrar en C++.
Consulte [esta respuesta] (http://stackoverflow.com/questions/2139224/how-to-pass-objects-to-functions-in-c/2139254#2139254) para ver algunas reglas generales sobre cómo pasar los parámetros a las funciones en C++. – sbi
Buena discusión aquí: http: // stackoverflow.com/questions/2550377/when-pass-by-pointer-is-preferred-to-pass-by-reference-in-c/2550405 # 2550405 –