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

-- no leer -- borrar

Estas en el tema de -- no leer -- borrar en el foro de C/C++ en Foros del Web. Borrar porfavor....
  #1 (permalink)  
Antiguo 10/08/2010, 11:01
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 13 años, 8 meses
Puntos: 0
-- no leer -- borrar

Borrar porfavor.

Última edición por Zunri; 11/08/2010 a las 02:45
  #2 (permalink)  
Antiguo 10/08/2010, 11:23
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Me pone nervioso !!!

Me ha funcionado si pongo:

int variable;

variable = 1;
funcion(&variable);

void funcion(int *variable)
{
variable = 2;
}

¿QUÉ SENTIDO TIENE SI NO ES UN PUNTERO? Que lio con los * los & los punteros, las variables normales :(
  #3 (permalink)  
Antiguo 10/08/2010, 13:51
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Me pone nervioso !!!

es facil
en tu segundo ejemplo lo q realmente estas haciendo es obtener la direccion en memoria en la q se encuentra la variable y esa es la q lo k le estas pasando.

si lo q quieres es pasar un valor por refererencia deberia estar asi

int main()
{
int var;
funcion(var);
}
void funcion(int &var)
{
var = 5;
}
  #4 (permalink)  
Antiguo 10/08/2010, 14:20
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Me pone nervioso !!!

Lo hice así pero sale:

funcion(int &, int &, int &) cannot be distingued form funcion(int, int, int)

¿Entonces cuando llamas a una funcion, cuando se pone el & en la llamda? tipo funcion(&variable);
  #5 (permalink)  
Antiguo 11/08/2010, 01:37
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Me pone nervioso !!!

cuando quieres pasar a la funcion una variable por puntero. Pasar un valor por referencia y por puntero es cuando dentro de esa funcion vas a cambiar el valor de dicha variable y quieres que se cambio de valor se vea reflejado en la funcion que invoco a la funcion que recibe una variable por referencia o por valor.

La referencia es hasta cierto punto similar a un puntero ya que los dos apuntan a la direccion de memoria de una variable. La diferencia es que a un puntero tu le puedes asignar otra posicion de memoria mientras que a una referencia no.

Los puntero es una caracterista que se heredo de C, por otra parte el paso por referencia es algo que surge con C++. Asi que almenos que se extrictamente necesario utiliza la referencia para variables que van a modificarse dentro de una funcion.
  #6 (permalink)  
Antiguo 11/08/2010, 01:45
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Me pone nervioso !!!

Creo que me aclaro.

Entonces yo puedo pasar una variable normal por referencia mediante void funcion(&variable) o si la variable es un puntero tambien cambia su informacion mediante void funcion(int *variable).

¿¿¿Correcto??? Pero entonces esto me hace pensar que siempre que pase un puntero a una funcion, siempre sera por referencia, y nunca por valor.

Y si pasas un puntero a una funcion, luego dentro de la funcion cuando la tocas para algo se debe hacer como *variable = 5; o variable = 5¿?

Muchas gracias. A ver si termino de aclararme con el valor y referencia en c.

Última edición por Zunri; 11/08/2010 a las 01:53
  #7 (permalink)  
Antiguo 11/08/2010, 12:03
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: -- no leer -- borrar

En pocas palabras:

void f(int a) ==> Pasamos la variable por valor´
{
a = 10; => no modifica la variable real, solo la local.
}

Llamada a la funcion:
a = 0;
f(a);
Al volver la variable "a" vale 0 .


void f(int *a ) => Pasamos un puntero de la variable
{
*a = 0; => asi modificamos el valor de la variable
}
Llamada a la funcion:
a = 100;
f(&a);
Al retornar la variable "a" sera 0;


void f(int &a) => pasamos el valor por referencia (tengo entendido que es solo para C++)
{
a = 10; => modifica el valor de la variable a pasada por referencia.
}
Llamada a la funcion:
a = 0;
f(a);
Al retornar la variable a es 10.

Este metodo no se si es asi correctamente.

Etiquetas: borrar
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 11:13.