在C语言编程中,也可以将地址作为参数传递给函数。
为了在函数定义中接受这些地址,我们可以使用指针。这是因为指针用于存储地址。让我们举个例子
示例:将地址传递给函数
#include <stdio.h>
void swap(int *n1, int *n2);
int main()
{
int num1 = 5, num2 = 10;
// address of num1 and num2 is passed
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()
函数。
指针n1
和n2
在函数定义中接受这些参数。
void swap(int* n1, int* n2) {
... ..
}
当swap()
函数内的*n1
和*n2
被更改时,main()
函数内的num1
和num2
也会被更改。
在swap()
函数中,*n1
和*n2
被交换。因此,num1
和num2
也被交换了。
请注意,swap()
没有返回任何内容;它的返回类型是void
。
示例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()
函数。在addOne()
函数中,ptr
指针获取了这个地址。
在函数内部,我们使用(*ptr)++;
将ptr
中存储的值加1。由于ptr
和p
指针都具有相同的地址,因此main()
中的*p
也变为11。