Puzzle P11

a in main value copied to x in myFunction

Review of Call by Value

What does the following code write to the monitor?

#include <stdio.h>

void myFunction( int x )  
{
  printf("  x=%d\n", x );
  x = 123;
  printf("  x=%d\n", x );
}

void main ( void )
{
  int a = 77;
  printf("a=%d\n", a );
  myFunction( a );
  printf("a=%d\n", a );

}

The diagram shows main() and myFunction(), each as a module with its own local variable or parameter. The variable a has block scope and can be seen only by main(). The parameter x has block scope and can be seen only by myFunction().

When myFunction() is called by main() the value in a is copied into x. In this example 77 is copied into x.

Changes that myFunction() make to its parameter x do not affect a. In this example, x starts out as 77, but then is changed to 123. But this change does not affect a.

How to Confuse People: Usually programmers say "myFunction is called with a." It sounds as if a somehow is connected to the function. But programmers should say "myFunction is called with the value in a."



Answer         Next Page         Previous Page Home