What does the following code write to the monitor?
#include <stdio.h>
void functionB( int y )
{
printf(" y=%d\n", y );
y = 999;
printf(" y=%d\n", y );
}
void functionA( int x )
{
printf(" x=%d\n", x );
x = 123;
functionB( x );
printf(" x=%d\n", x );
}
void main ( void )
{
int a = 77;
printf("a=%d\n", a );
functionA( a );
printf("a=%d\n", a );
}
In this puzzle main()
calls functionA()
which calls functionB().
Of course, call by value is used for all these calls
and changes made by a function to its parameter do
not affect any variable in the caller.