在本教程中,您將借助示例學習將地址作為參數(shù)傳遞給函數(shù)。此技術(shù)稱為“引用調(diào)用”。
在C語言編程中,也可以將地址作為參數(shù)傳遞給函數(shù)。
要在函數(shù)定義中接受這些地址,我們可以使用指針。這是因為指針用于存儲地址。讓我們舉個實例:
#include <stdio.h> void swap(int *n1, int *n2); int main() { int num1 = 5, num2 = 10; //傳遞num1和num2的地址 swap( &num1, &num2); printf("num1 = %d\n", num1); printf("num2 = %d", num2); return 0; } void swap(int* n1, int* n2) { int temp; temp = *n1; *n1 = *n2; *n2 = temp; }
運行該程序時,輸出為:
num1 = 10 num2 = 5
使用swap(&num1, &num2);將num1和num2的地址傳遞給swap()函數(shù)。
指針n1和n2接受函數(shù)定義中的這些參數(shù)。
void swap(int* n1, int* n2) { ... .. }
當swap()函數(shù)中的*n1和*n2發(fā)生變化時,main()函數(shù)中的num1和num2也會發(fā)生變化。
在swap()函數(shù)內(nèi)部,* n1和* n2被交換。 因此,num1和num2也被交換。
注意,swap()不返回任何東西。 其返回類型為void。
該方式在C語言編程中稱為“引用調(diào)用”。
#include <stdio.h> void addOne(int* ptr) { (*ptr)++; //在*ptr上加1 } int main() { int* p, i = 10; p = &i; addOne(p); printf("%d", *p); // 11 return 0; }
這里,存儲在*p值最初為10。
然后我們將指針p傳遞給addOne()函數(shù)。ptr指針在addOne()函數(shù)中獲取這個地址。
在函數(shù)內(nèi)部,我們使用(*ptr)++;將存儲在ptr上的值增加1。因為ptr和p指針都有相同的地址,所以main()中的*p也是11。