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

[SOLUCIONADO] Parametros por valor y por referencia

Estas en el tema de Parametros por valor y por referencia en el foro de C/C++ en Foros del Web. Hola a todos tengo una duda, tengo entendido que un puede trabajar parametros por referencia para optimizar el manejo en memoria RAM, ya que el ...
  #1 (permalink)  
Antiguo 30/08/2014, 18:29
 
Fecha de Ingreso: febrero-2014
Mensajes: 107
Antigüedad: 10 años, 8 meses
Puntos: 0
Pregunta Parametros por valor y por referencia

Hola a todos tengo una duda, tengo entendido que un puede trabajar parametros por referencia para optimizar el manejo en memoria RAM, ya que el pasar parametros por valor se crea una copia en el metodo para trabajar con esto. ejemplo:

Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void func(int *p){
  5.     *p=*p+1;
  6.     cout<<*p;
  7. }
  8.  
  9. int main(){
  10.  
  11.     int a=5;
  12.     func(&a);
  13. }

En el anterior codigo estoy trabajando parametros por referencia, pero estoy muy enredado, por la siguiente razon:

void func(int *p)---->Esto es una funcion que crea un puntero tipo int para recibir la direccion de una variable; pero al crear este puntero tambien se estaria reservando un espacio en la memoria RAM para meter una direccion; esto es lo que no entiendo, da igual reservar para este caso, 4bytes para una variable que 4bytes para un puntero y no se estaria ahorrando memoria RAM.
  #2 (permalink)  
Antiguo 31/08/2014, 02:39
Avatar de jc_moj  
Fecha de Ingreso: septiembre-2009
Ubicación: Andalucía
Mensajes: 137
Antigüedad: 15 años, 2 meses
Puntos: 12
Respuesta: Parametros por valor y por referencia

Hola

Es que con un int igual no se justifica, ten en cuenta que un int ocupa poca memoria, pero piensa en un objeto complejo, o una lista o estructura de datos compleja, ahí sí que habría ahorro.

Por cierto, para pasar por referencia no tienes que crear un puntero, basta con añadir el carácter &:

Código:
void incrementar(int &numero){
	++numero;
}

...
	int a = 5;
	
	incrementar(a);
	
	cout << "a vale " << a; // imprime 6
Saludos

Última edición por jc_moj; 31/08/2014 a las 02:46
  #3 (permalink)  
Antiguo 01/09/2014, 00:18
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 5 meses
Puntos: 73
Respuesta: Parametros por valor y por referencia

Pasas por referencia cuando necesitas modificar el valor de lo que estás pasando. Pasas por valor cuando no necesitas modificar el valor de lo que estás pasando. Las excepciones son:

- Los arrays siempre pasan por referencia.
- En el caso de estructuras de datos, aunque pueden pasar por valor, es conveniente pasarlas por referencia. El pasarlas por valor supone más tiempo de máquina para generar una copia de la estructura que si se trata de generar una copia de un tipo de datos simple.

Etiquetas: memoria, metodos, punteros
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 17:42.