next up previous contents
Next: 變數參數 Up: 函式 Previous: 宣告   Contents

函式參數

  1. call by value
    /* function definition to swap the values */
    void swap(int x, int y)
    {
       int temp;
    
       temp = x; /* save the value of x */
       x = y;    /* put y into x */
       y = temp; /* put temp into y */
      
       return;
    }
    
    #include <stdio.h>
     
    /* function declaration */
    void swap(int x, int y);
     
    int main ()
    {
       /* local variable definition */
       int a = 100;
       int b = 200;
     
       printf("Before swap, value of a : %d\n", a );
       printf("Before swap, value of b : %d\n", b );
     
       /* 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;
    }
    
  2. call by reference
    /* 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 */
      
       return;
    }
    
    #include <stdio.h>
     
    /* function declaration */
    void swap(int *x, int *y);
     
    int main ()
    {
       /* local variable definition */
       int a = 100;
       int b = 200;
     
       printf("Before swap, value of a : %d\n", a );
       printf("Before swap, value of b : %d\n", b );
     
       /* calling a function to swap the values.
        * &a indicates pointer to a ie. address of variable a and 
        * &b indicates pointer to b ie. address of variable b.
       */
       swap(&a, &b);
     
       printf("After swap, value of a : %d\n", a );
       printf("After swap, value of b : %d\n", b );
     
       return 0;
    }
    



2015-01-16