在本教程中,您將借助示例學(xué)習(xí)將地址作為參數(shù)傳遞給函數(shù)。此技術(shù)稱(chēng)為“引用調(diào)用”。
在C語(yǔ)言編程中,也可以將地址作為參數(shù)傳遞給函數(shù)。
要在函數(shù)定義中接受這些地址,我們可以使用指針。這是因?yàn)橹羔樣糜诖鎯?chǔ)地址。讓我們舉個(gè)實(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;
}運(yùn)行該程序時(shí),輸出為:
num1 = 10 num2 = 5
使用swap(&num1, &num2);將num1和num2的地址傳遞給swap()函數(shù)。
指針n1和n2接受函數(shù)定義中的這些參數(shù)。
void swap(int* n1, int* n2) {
... ..
}當(dāng)swap()函數(shù)中的*n1和*n2發(fā)生變化時(shí),main()函數(shù)中的num1和num2也會(huì)發(fā)生變化。
在swap()函數(shù)內(nèi)部,* n1和* n2被交換。 因此,num1和num2也被交換。
注意,swap()不返回任何東西。 其返回類(lèi)型為void。
該方式在C語(yǔ)言編程中稱(chēng)為“引用調(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;
}這里,存儲(chǔ)在*p值最初為10。
然后我們將指針p傳遞給addOne()函數(shù)。ptr指針在addOne()函數(shù)中獲取這個(gè)地址。
在函數(shù)內(nèi)部,我們使用(*ptr)++;將存儲(chǔ)在ptr上的值增加1。因?yàn)閜tr和p指針都有相同的地址,所以main()中的*p也是11。