Foros del Web » Programación para mayores de 30 ;) » C/C++ »

El operador de direccion en los parametros de la funcion

Estas en el tema de El operador de direccion en los parametros de la funcion en el foro de C/C++ en Foros del Web. Holaa tengo una duda teniendo una funcion ejemplo void funcion(int a, int b) { // } main() { funcion(&variable1, variable2) } cuando hago eso es ...
  #1 (permalink)  
Antiguo 03/06/2009, 08:15
 
Fecha de Ingreso: octubre-2008
Mensajes: 50
Antigüedad: 15 años, 6 meses
Puntos: 2
El operador de direccion en los parametros de la funcion

Holaa tengo una duda

teniendo una funcion ejemplo

void funcion(int a, int b)
{
//
}

main()
{
funcion(&variable1, variable2)

}

cuando hago eso es que variable1 le estoy pasando la direccion de memoria

pero que significa cuando esta la funcion asi

void funcion(int &a, int b)

osea porque poner el operador de direecion ahi?
  #2 (permalink)  
Antiguo 03/06/2009, 08:41
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: El operador de direccion en los parametros de la funcion

En C++ eso es paso de parametros por referencia. En la segunda funcion cuando le asignes un valor a la variable local a esta se vera reflejada en el parametro que le hayas pasado ya que no sera una copia del parametro sino una referencia.

Ejemplo simple:

Código:
void funcion(int &a)
{
  a = 99;
}

void funcion2(int a)
{
  a = 150;
}

void funcion3(int *a)
{
  *a = 250;
}


int main()
{
  int var = 66;
  cout << var << endl;
  funcion(var);
  cout << var << endl;
  funcion2(var);
  cout << var << endl;
  funcion3(&var);
  cout << var << endl;
  return 0;
}


PD. En el primer caso que planteas te dara un error de compilacion salvo que hagas que el parametro sea int *.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 03/06/2009, 08:44
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 16 años, 4 meses
Puntos: 57
Respuesta: El operador de direccion en los parametros de la funcion

Hace tiempo que no programo en C pero segun recuerdo, cuando haces esto
Código:
void funcion(int &a, int b)
estas declarando una funcion que espera en el primer parametro un apuntador a un entero. No un valor sino un apuntador a un valor.

Si en tu funcion main utilizas esto
Código:
funcion(&variable1, variable2)
entonces tu funcion la debes declarar como
Código:
void funcion(int &a, int b)
  #4 (permalink)  
Antiguo 03/06/2009, 08:47
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: El operador de direccion en los parametros de la funcion

No posman, en C no hay referencias, si lo que queres pasar es un puntero entonces usas * en la funcion y el nombre de la variable precedido de & cuando llamas.
En C++, si hay referencias, usas & en la funcion y el nombre de la variable directamente cuando llamas.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:57.