位置:首頁 > 高級語言 > C語言教學 > C語言引用函數調用

C語言引用函數調用

通過傳遞函數參數拷貝參數的地址到形式參數的引用方法的調用。內部的函數,地址是用來訪問調用中使用的實際參數。這意味著,對參數的更改會影響傳遞的參數。

要通過引用傳遞的值,參數的指針被傳遞給函數就像其他值。所以相應的需要聲明函數的參數為指針類型,如下麵的函數swap(),它交換兩個整型變量的值指向它的參數。

/* 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;
}

要查看更詳細的關於C - 指針,可以查看 C - 指針篇章。

現在,讓我們調用函數swap()通過引用作為在下麵的示例中傳遞值:

#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
", a );
   printf("Before swap, value of b : %d
", b );
 
   /* calling a function to swap the values.
    * &a indicates yiibaier to a ie. address of variable a and 
    * &b indicates yiibaier to b ie. address of variable b.
   */
   swap(&a, &b);
 
   printf("After swap, value of a : %d
", a );
   printf("After swap, value of b : %d
", b );
 
   return 0;
}

讓我們把上麵的代碼寫在一個C文件,編譯並執行它,它會產生以下結果:

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

這表明變化的函數影響到外部,不同於通過值調用的外部體改變不能反映函數之外。