/* --------------------------------------------------------------------- ** Figure 12.6: Call by address. ** --------------------------------------------------------------------- */ #include void f1( int * xp ); void f2( int * xp ); void main( void ) { int k = 1; /* An int variable, initialized to 1. */ printf( "Original value of k: %i\n", k ); f1( &k ); /* This function changes the value of k. */ printf( "Changed value of k: %i\n", k ); f2( &k ); /* This function changes the value of k. */ printf( "Input is stored in k: %i\n", k ); } /* --------------------------------------------------------------------- */ void f1( int * xp ) /* xp is an in/out parameter*/ { *xp = *xp + 2; /* add 2 to the old value of xp's referent. */ } /* --------------------------------------------------------------------- */ void f2( int * xp ) /* xp is an output parameter. */ { printf( "Enter an integer: " ); scanf( "%i", xp ); }