C 传递地址和指针
C 传递地址和指针
在本教程中,您将学习在示例的帮助下将地址和指针作为参数传递给函数。
在 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
num1 的地址 和 num2 被传递给 swap()
使用 swap(&num1, &num2);
的函数 .
指针 n1 和 n2 在函数定义中接受这些参数。
void swap(int* n1, int* n2) {
... ..
}
当 *n1 和 *n2 在 swap()
内更改 函数,num1 和 num2 在 main() 里面 功能也变了。
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()
功能。 ptr 指针在 addOne()
中获取此地址 功能。
在函数内部,我们增加了存储在 ptr 的值 通过 1 使用 (*ptr)++;
.由于 ptr 和 p 指针都有相同的地址,*p
在 main()
内 也是 11 岁。
C语言