Consulta sobre punteros y referencias.

Iniciado por anonimo12121, 26 Febrero 2013, 16:20 PM

0 Miembros y 1 Visitante están viendo este tema.

anonimo12121

Es los mismo lo siguiente?

Código (cpp) [Seleccionar]
#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;
}


Código (cpp) [Seleccionar]
#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;
}
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

x64core

Cita de: Xafi en 26 Febrero 2013, 16:20 PM
Es los mismo lo siguiente?

Código (cpp) [Seleccionar]
#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;
}


Código (cpp) [Seleccionar]
#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.


anonimo12121

#2
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?
Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746

x64core

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.

amchacon

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.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

85

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);


Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/