C/Visual C - Envio de parametros por valor y direccion

 
Vista:

Envio de parametros por valor y direccion

Publicado por Sergio (1 intervención) el 01/06/2012 23:44:39
Tengo una duda sobre la diferencia de enviar parametros por valor y por referencia en C, alguien podia explicarmelo de una forma sencilla por favor??? de antemano muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Envio de parametros por valor y direccion

Publicado por David (3 intervenciones) el 05/06/2012 11:14:03
El paso de parámetros en C es siempre por valor, me explico mejor con un ejemplo:

1
2
3
4
5
6
7
int divby2(int val) {return val / 2;}
 
int main(void)
{
  int a = 5;
  int b = divby2(a);
  ...

En este caso el parámetro val es una variable int (independiente de a) que recibe un valor, p.ej 5

En este otro caso:

1
2
3
4
5
6
void divby2(int *pval) {*pval /= 2;}
 
int main(void)
{
  int a = 4;
  divby2(&a);

pval es un puntero a int (también independiente de a), el paso de parámetros sigue siendo por valor, pero ahora ese valor no es un int sino la dirección de memoria de ese int, anteponiendo el operador * al nombre del puntero accedes directamente a la zona de memoria (o a la variable para entendernos mejor) a la que apunta, luego operar sobre *pval es lo mismo que operar sobre la variable a, el operador & indica a que dirección de memoria debe apuntar pval
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar