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.