Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: anonimo12121 en 26 Febrero 2013, 16:20 pm



Título: Consulta sobre punteros y referencias.
Publicado por: anonimo12121 en 26 Febrero 2013, 16:20 pm
Es los mismo lo siguiente?

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. int *px;
  5. void cambiar(int *valor){
  6.    px= valor;
  7.    *px=7;
  8. }
  9. int main(int argc, char*argv[]){
  10.    int x=0;
  11.    cout << x << endl;
  12.    cambiar(&x);
  13.    cout << x << endl;
  14. }

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. int *px;
  5. void cambiar(int &valor){
  6.    px= &valor;
  7.    *px=7;
  8. }
  9. int main(int argc, char*argv[]){
  10.    int x=0;
  11.    cout << x << endl;
  12.    cambiar(x);
  13.    cout << x << endl;
  14. }


Título: Re: Consulta sobre punteros y referencias.
Publicado por: x64core en 26 Febrero 2013, 16:40 pm
Es los mismo lo siguiente?

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. int *px;
  5. void cambiar(int *valor){
  6.    px= valor;
  7.    *px=7;
  8. }
  9. int main(int argc, char*argv[]){
  10.    int x=0;
  11.    cout << x << endl;
  12.    cambiar(&x);
  13.    cout << x << endl;
  14. }

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. int *px;
  5. void cambiar(int &valor){
  6.    px= &valor;
  7.    *px=7;
  8. }
  9. int main(int argc, char*argv[]){
  10.    int x=0;
  11.    cout << x << endl;
  12.    cambiar(x);
  13.    cout << x << endl;
  14. }

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.



Título: Re: Consulta sobre punteros y referencias.
Publicado por: anonimo12121 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?


Título: Re: Consulta sobre punteros y referencias.
Publicado por: x64core en 26 Febrero 2013, 17:36 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.


Título: Re: Consulta sobre punteros y referencias.
Publicado por: amchacon en 26 Febrero 2013, 18:14 pm
al 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.


Título: Re: Consulta sobre punteros y referencias.
Publicado por: 85 en 27 Febrero 2013, 05:10 am
Código:
void cambiar(int &valor){
    valor=7;
}

claro la dirección..

sino
Código:
void cambiar(int* valor){
    *valor=7;
}

pero al llamarla tenés que hacer así
Código:
int valor;
 cambiar(&valor);