Es los mismo lo siguiente?
#include <iostream>
using namespace std;
int *px;
void cambiar(int *valor){
px= valor;
*px=7;
}
int main(int argc, char*argv[]){
int x=0;
cout << x << endl;
cambiar(&x);
cout << x << endl;
}
#include <iostream>
using namespace std;
int *px;
void cambiar(int &valor){
px= &valor;
*px=7;
}
int main(int argc, char*argv[]){
int x=0;
cout << x << endl;
cambiar(x);
cout << x << endl;
}
Cita de: Xafi en 26 Febrero 2013, 16:20 PM
Es los mismo lo siguiente?
#include <iostream>
using namespace std;
int *px;
void cambiar(int *valor){
px= valor;
*px=7;
}
int main(int argc, char*argv[]){
int x=0;
cout << x << endl;
cambiar(&x);
cout << x << endl;
}
#include <iostream>
using namespace std;
int *px;
void cambiar(int &valor){
px= &valor;
*px=7;
}
int main(int argc, char*argv[]){
int x=0;
cout << x << endl;
cambiar(x);
cout << x << endl;
}
Hola,
Los dos codigos pasan una referencia a la variable, en una pasa el puntero (C) en otra pasa por referencia explicita (C++).
Yo por lo general uso la referencia por punteros.
osea usas el segundo código, esto que quieres decir que la referencia explicita no funciona en C?
Yo suelo usar la segunda.
al hacerlo como el segundo código, no se crea ninguna variable local verdad?
Cita de: Xafi en 26 Febrero 2013, 17:25 PM
osea usas el segundo código, esto que quieres decir que la referencia explicita no funciona en C?
Yo suelo usar la segunda.
al hacerlo como el segundo código, no se crea ninguna variable local verdad?
Referencias no existen en C.
Si te refieres a la variable local que creaste en ambos códigos, en ambos códigos se puede acceder sin ninguna variable local.
void cambiar(int *valor){
*valor=7;
}
void cambiar(int &valor){
valor=7;
}
La diferencia es el operador para des-referenciar el puntero.
Cita de: Xafi en 26 Febrero 2013, 17:25 PMal hacerlo como el segundo código, no se crea ninguna variable local verdad?
Se crea un puntero.
Pero variables nada, se pasa la dirreción de la variable anterior.
void cambiar(int &valor){
valor=7;
}
claro la dirección..
sino
void cambiar(int* valor){
*valor=7;
}
pero al llamarla tenés que hacer así
int valor;
cambiar(&valor);