Buenas
Yo hace poco empecé con los punteros y voy a tratar de darte una solución al problema que planteas.
Si me equivoco por favor haganmelo saber así sigo aprendiendo.
Lo que hice principalemente fue comentarte un poco el programa para que lo entiendas mejor.
Espero sirva
Código:
#include <stdio.h>
void funcion(int *c, int b, int *a)
{
*c = b + *c;
b = * a + *c;
*a = b * *c;
}
int main(void)
{
int a=1,b=1,c=-2;
funcion(&a,b,&b);
/*
*a += b; como b = 1 -> *a = 2
b = *b + *a; b = 3
*b = b * *a como b = 3 y *a = 2 -> *b = 6
Como no se realizan modificaciones en el contenido de c este queda
con valor -2
No se si ya lo sabías de antes, pero el asterisco adelante de la variable
es para acceder al contenido de la misma
*/
printf("a = %d b = %d c = %d ",a,b,c);
/* como %d corresponde a enteros, imprimis el contenido de la variables,
que como te mostré y vos dijiste son a = 2, b = 6, c = -2 */
funcion(&c,b,&a);
/*
*c += b; como b = 6 y *c = -2 -> *c = 4
b = *a + *c; como *a = 2 y *c = 4 -> b = 6
*a = b * *c como b = 6 y *c = 4 -> *a = 24
*/
printf("a = %d b = %d c = %d",a,b,c);
/* Mismo concepto que el anterior */
getchar();
return 0;
}
PD: Hice alguna mínima modificación en el código para que compile "bien" en el Dev-C++, pero no es nada que cambie el contenido del programa.
Saludos