原文: https://www.programiz.com/c-programming/c-pointer-functions
在本教程中,您将借助示例学习将地址作为参数传递给函数。 此技术称为“引用调用”。
在 C 编程中,也可以将地址作为参数传递给函数。
要在函数定义中接受这些地址,我们可以使用指针。 这是因为指针用于存储地址。 让我们举个例子:
示例:按引用调用
#include <stdio.h>void swap(int *n1, int *n2);int main(){int num1 = 5, num2 = 10;// address of num1 and num2 is passedswap( &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()函数。
指针n1和n2在函数定义中接受这些参数。
void swap(int* n1, int* n2) {
... ..
}
在swap()函数中更改* n1和* n2时,main()中的num1和num2函数也被更改。
在swap()函数内部,交换了*n1和*n2。 因此,num1和num2也被交换。
请注意,swap()没有返回任何内容。 其返回类型为void。
该技术在 C 编程中称为“按引用调用”。
示例 2:将指针传递给函数
#include <stdio.h>
void addOne(int* ptr) {
(*ptr)++; // adding 1 to *ptr
}
int main()
{
int* p, i = 10;
p = &i;
addOne(p);
printf("%d", *p); // 11
return 0;
}
在此,存储在p*p的值最初为 10。
然后,我们将指针p传递给addOne()函数。ptr指针在addOne()函数中获取此地址。
在函数内部,我们使用(*ptr)++;将ptr中存储的值增加了 1。 由于ptr和p指针都具有相同的地址,因此main()中的*p也是 11。
