Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/08/2012, 22:52
feivelfabiola
 
Fecha de Ingreso: julio-2009
Mensajes: 26
Antigüedad: 15 años, 5 meses
Puntos: 0
Pregunta Duda en C: función con parámetros por referencia.

Tengo el libro fundamentos de programación: piensa en C, y estoy leyendo el capítulo 4: funciones, pero en el subtema parámetros por referencia no he logrado entender el siguiente programa que muestra el resultado que debe generar, solo que no he logrado que el mismo resultado, espero que alguien me pueda explicar, el programa es el siguiente:

#include<stdio.h>

int a, b, c, d; //variables globales

void funcion1 ( int, int *, int *); //prototipo de función

int funcion2 (int *, int); //prototipo de función

void main()

{

int a=1; //variable local de main

b=2; //variable global

c=3; //variable global

d=4; //variable global

printf("\n %d %d %d %d", a, b, c, d);

a=funcion2(&a, c); //se llama a la funcion2 que manda a llamar a la funcion1

//el valor de a es el valor que retorna la funcion2 y se imprime aquí:

printf("\n %d %d %d %d", a, b, c, d);

}



void funcion1 (int r, int *b, int *c)

{

int d;

a = *c;

d = a + 3 + *b;

if (r)

{

*b = *b + 2;

*c = *c + 3;

printf("\n %d %d %d %d", a, *b, *c, d);

}

else

{

*b = *b + 5;

*c = *c + 4;

printf("\n %d %d %d %d", a, *b, *c, d);

}



int funcion2 (int *d, int c)

{

int b;

a = 1;

b = 7;

funcion1( -1, d, &b);

printf("\n %d %d %d %d", a, b, c, *d);

c += 3;

(*d) += 2;

printf("\n %d %d %d %d", a, b, c, *d);

return (c);

}

El resultado del libro es el siguiente:

1 2 3 4

7 3 10 11

7 10 3 3

7 10 6 5

6 2 3 4



Y pues aún no he logrado obtener el mismo resultado que el libro,

espero que me puedan al menos dar sugerencias, o comentarme

sobre un buen libro o manual sobre este tema para seguir investigando.