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

paso de una estructura por referencia o por valor

Estas en el tema de paso de una estructura por referencia o por valor en el foro de C/C++ en Foros del Web. Hola, no entiendo muy bien lo que significa el paso de una estructura por valor o por referencia. ¿Cuándo se debe utilizar una u otra?, ...
  #1 (permalink)  
Antiguo 28/06/2010, 11:42
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 1 mes
Puntos: 0
paso de una estructura por referencia o por valor

Hola, no entiendo muy bien lo que significa el paso de una estructura por valor o por referencia. ¿Cuándo se debe utilizar una u otra?, ¿el paso de una estructura por referencia es lo mismo que un puntero a una estructura?. Gracias.
  #2 (permalink)  
Antiguo 28/06/2010, 12:04
 
Fecha de Ingreso: junio-2010
Mensajes: 3
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: paso de una estructura por referencia o por valor

El tipo de datos más característico del C son los punteros. Un puntero contiene un valor que es la dirección en memoria de un dato de cierto tipo. Cuando se declara una variable, se reserva un espacio en la memoria para almacenar el valor de la variable. Ese espacio en memoria tiene una dirección. Un puntero es una dirección dentro de la memoria, o sea, un apuntador a donde se encuentra una variable.

Generalmente cuando se hacen funciones creo, que alguno me corrija si me equivoco, las estructuras al ser un dato compuesto se pasan a funciones por referencia o sea no se crea una nueva "auxiliar" en memoria, es decir toda modificacion que subra dentro de la funcion va a quedar en la original.

Solo los datos simples se pasados a funciones por valor y referencia.
  #3 (permalink)  
Antiguo 29/06/2010, 09:51
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: paso de una estructura por referencia o por valor

Una estructura puede ser pasado por valor como por referencia, al igual que un dato simple.

La diferencia de pasar un dato por valor o por referencia, es que por valor se hace una copia haciendo imposible que puedas modificar la estructura original. Todo cambio que les haga adentro de la funcion, no trendra ocurrencia en la original.

En cambio, al pasar una estructura por referencia, lo que se pasa es un puntero a la estructura, y todo cambio que hagas dentro de tu funcion se haran sobre la estructura original.
  #4 (permalink)  
Antiguo 29/06/2010, 21:30
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: paso de una estructura por referencia o por valor

en cuanto a tu pregunta de que si un puntero y una referencia es lo mismo, en cierta forma si.
ya que un puntero apunta a una direccion d memoria, al giual que una referencia. La diferencia esta en que el puntero puede modificar la direccion de memoria a la que esta apuntando una referencia no. Por ejemplo

int main()
{
int x=12;
int *pX;
pX=&x;
int &rX= x;
printf("%p %p %p", &x, &ref, pX);
}

si tu corres el programa anterior veras que todos apuntan a la misma dirección. La referencia ademas tiene una ventaja, que es que se comporta como una variable normal. e incluso para acceder a su miembro utilizas el operador . y no ->.

Con respecto de cuando utilizar un paso por referencia o un paso por valor. Es la respuesta es siempre que quieras pasar un objecto(una estructrua o una clase) pasala como referencia, la ventaja es que evitas hacer una copia inecesaria y cuando los datos de una estructura son grandes, esto representa una gran ventaja.

por ejemplo
struct estruct1
{
int x;
};
void cambiarValor(estruct1 &obj)
{
obj.x =12;
}
void imprimir(const estruct1 &obj)
{

printf("%d",obj.x);
}

int main()
{
estruct1 obj;

cambiarValor(obj);
imprimir(obj);
return 0;
}

como puedes observar a en imprimir he agregado la palabra reservad const, la cual indica que el valor de la estructura no va ser modificado solo accesado. Esto sirve para diferenciar de los objectos que si van a ser modificados dentro de la funcion como en el caso de cambiar valor en la que no inclui const
  #5 (permalink)  
Antiguo 29/06/2010, 21:37
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: paso de una estructura por referencia o por valor

ya que estoy hago un pregunta...porque esa no la tenia la de poner como un tipo de valor con el '&' y no con '*'. Eso esta para c++?? o en C tambien ya existe...sino sera por eso que no lo conocia.
  #6 (permalink)  
Antiguo 30/06/2010, 10:36
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: paso de una estructura por referencia o por valor

si tu preguntas que si el paso por referencia es C++ o de C o de ambos. La respuesta es que el sentido extrito es de C++. Para C, solo es valido el paso por punteros. Pero minette1988 solo pregunto de forma general no en forma particular para C o C++.
  #7 (permalink)  
Antiguo 30/06/2010, 10:57
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: paso de una estructura por referencia o por valor

Muchas gracias por la respuesta..... yo queria saber en cual de los dos lenguajes se implemento eso.....porque nunca lo habia escuchado....

Etiquetas: estructura, referencia
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 18:26.