Ver Mensaje Individual
  #6  
Antiguo 07-09-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola dandyuno.
Cita:
Empezado por dandyuno Ver Mensaje
Gracias de nuevo, el tema de los punteros no lo llevo muy bien, he leído sobre ello pero aún estoy muy verde al respecto.
Una función puede recibir un parámetro por valor o por referencia.

Básicamente, cuando el argumento es pasado por valor, la función hace una copia local del mismo y trabaja sobre el, por lo tanto no se altera el contenido del objeto enviado. Cuando es pasado por referencia, la función recibe la dirección del argumento, el valor del mismo puede alterarse dentro de ella y no se pueden enviar constantes ni expresiones.

Código PHP:
// [1] por valor
int foo1(int v)
{
  
v++;  // no altera valor
  
return v;
}

// [2] puntero a la dirección (C/C++)
int foo2(intv)
{
  
v++;  // altera valor
  
return *v;
}

// [3] referencia (C++)
int foo3(intv)
{
  
v++;  // altera valor
  
return v;
}

// [4] referencia constante(C++)
int foo4(const intv)
{
  
v++;   // ¡¡ Error !!
  
return v;

En el caso de objetos de la VCL debes usar la forma [2].

Cuando no es necesario que se modifique el valor enviado como argumento es mas eficiente pasarlo como referencia constante [4] que no crea una copia local, con la seguridad adicional de no permitir la modificación involuntaria.

Buscando un poco encontré este apunte específico sobre: Funciones en C++ Builder

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 07-09-2015 a las 14:38:45. Razón: agregar comentarios
Responder Con Cita