C 引用方式調用函數

C 函數 C 函數

通過引用傳遞方式,形參為指向實參地址的指針,當對形參的指向操作時,就相當於對實參本身進行的操作。

傳遞指針可以讓多個函數訪問指針所引用的對象,而不用把對象聲明為全局可訪問。

/* 函數定義 */
void swap(int *x, int *y)
{
   int temp;
   temp = *x;    /* 保存地址 x 的值 */
   *x = *y;      /* 把 y 賦值給 x */
   *y = temp;    /* 把 temp 賦值給 y */

   return;
}

如需瞭解 C 中指針的更多細節,請訪問 C - 指針 章節。

現在,讓我們通過引用傳值來調用函數 swap()

實例

#include <stdio.h>
 
/* 函數聲明 */
void swap(int *x, int *y);
 
int main ()
{
   /* 局部變數定義 */
   int a = 100;
   int b = 200;
 
   printf("交換前,a 的值: %d\n", a );
   printf("交換前,b 的值: %d\n", b );
 
   /* 調用函數來交換值
    * &a 表示指向 a 的指針,即變數 a 的地址
    * &b 表示指向 b 的指針,即變數 b 的地址
   */

   swap(&a, &b);
 
   printf("交換後,a 的值: %d\n", a );
   printf("交換後,b 的值: %d\n", b );
 
   return 0;
}

當上面的代碼被編譯和執行時,它會產生下列結果:

交換前,a 的值: 100
交換前,b 的值: 200
交換後,a 的值: 200
交換後,b 的值: 100

上面的實例表明了,與傳值調用不同,引用調用在函數內改變了 a 和 b 的值,實際上也改變了函數外 a 和 b 的值。

C 函數 C 函數