Page 78 - 6437
P. 78

/* calling a function to swap the values */

                                swap(a, b);


                                printf("After swap, value of a : %d\n", a );
                                printf("After swap, value of b : %d\n", b );


                                return 0;

                            }

                          Let us put the above code in a single C file, compile and execute it, it will produce the
                   following result:


                 Before swap, value of a :100

                 Before swap, value of b :200
                 After swap, value of a :100

                 After swap, value of b :200
                          It shows that there are no changes in the values, though they had been changed inside the
                   function.

                          Call by Reference
                          The call by reference method of passing arguments to a function copies the address of an
                   argument into the formal parameter. Inside the function, the address is used to access the actual
                   argument used in the call. It means the changes made to the parameter affect the passed argument.
                          To pass a value by reference, argument pointers are passed to the functions just like any
                   other value. So accordingly, you need to declare the function parameters as pointer types as in the
                   following function swap(), which exchanges the values of the two integer variables pointed to, by
                   their arguments.




                 /* function definition to swap the values */
                 void swap(int *x, int *y)
                 {

                    int temp;

                    temp = *x;       /* save the value at address x */
                    *x = *y;         /* put y into x */
                    *y = temp;       /* put temp into y */










                                                                                                      81
   73   74   75   76   77   78   79   80   81   82   83