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
這表明變化的函數影響到外部,不同於通過值調用的外部體改變不能反映函數之外。