Argument-Passing

Argument-Passing by Value

<arg_by_value.c>
#include <stdio.h> void main ( ) { int a = 2; printf ("Value of 'a' in main( ) before calling MyFunction( ) is %d\n", a); MyFunction (a); printf ("Value of 'a' in main( ) after calling MyFunction( ) is %d\n", a); } void MyFunction (int a) { printf ("Value of 'a' inside MyFunction( ) before being changed is %d\n", a); a = 9; printf ("Value of 'a' inside MyFunction( ) after being changed is %d\n", a); }
Here's the output:

UNIX prompt >> a.out
Value of 'a' in main( ) before calling MyFunction( ) is 2

Value of 'a' inside MyFunction( ) before being changed is 2
Value of 'a' inside MyFunction( ) after being changed is 9

Value of 'a' in main( ) after calling MyFunction( ) is 2
UNIX prompt >>


Argument-Passing by Reference

<arg_by_reference.c>
#include <stdio.h> void main ( ) { int a = 2; printf ("Value of 'a' in main( ) before calling MyFunction( ) is %d\n", a); MyFunction (&a); printf ("Value of 'a' in main( ) after calling MyFunction( ) is %d\n", a); } void MyFunction (int *a) { printf ("Value of 'a' inside MyFunction( ) before being changed is %d\n", *a); *a = 9; printf ("Value of 'a' inside MyFunction( ) after being changed is %d\n", *a); }
Here's the output:

UNIX prompt >> a.out
Value of 'a' in main( ) before calling MyFunction( ) is 2

Value of 'a' inside MyFunction( ) before bing changed is 2
Value of 'a' inside MyFunction( ) after bing changed is 9

Value of 'a' in main( ) after calling MyFunction( ) is 9
UNIX prompt >>