#include <stdio.h>
int sum_call_by_value (int x, int y);
int sum_call_by_reference (int *x, int *y);

 

main()
{
int a=3, b=4, c;
int d=3, e=4, f;
c = sum_call_by_value (a, b);
printf("call by value : a=%d, b=%d, c=%d ", a, b, c );
f = sum_call_by_reference (&d, &e);
printf("call by reference: d=%d, e=%d, f=%d ", d, e, f );
}

 

int sum_call_by_value (int x, int y)
{
int sum=x+y;
x = 123;
y = 456;
return sum;
}

 

int sum_call_by_reference (int *x, int *y)
{
int sum= *x + *y;
*x = 123;
*y = 456;
return sum;
}

 

을 출력하면

call by value : a=3, b=4, c=7
call by reference: d=123, e=456, f=7

로 나오는데,

d=3, e=4인데 왜 d=123, e=456, f=7 로 나옴?

<!-- serverLog: s24 --><!-- __LAZY__ -->