请准确解释为什么我在非数组变量上使用指针,例如int
我知道指针变量存储指定变量的地址,但为什么我们只需要单个变量的地址,这样做有什么好处?
int a = 10;
int *ptr_a = &a;
谢谢!
答案 0 :(得分:0)
虽然我猜你正在查看的代码应该给你答案......这样做的典型原因是将它传递给应该能够修改这个变量的函数。
如果您只是致电foo(a)
,则函数foo()
将接收变量的值作为参数,因此它拥有自己的副本。指针也会发生同样的事情,但指针当然仍指向原始变量,因此函数可以通过取消引用指针(*a = 42;
)来修改它。
答案 1 :(得分:0)
通过使用指针我们实现通过引用机制调用 请通过删除指针并记下输出来编译下面的代码段。
#include <stdio.h>
void swap(int *a,int *b);
int main(){
int num1=5,num2=10;
swap(&num1,&num2); /* address of num1 and num2 is passed to swap function */
printf("Number1 = %d\n",num1);
printf("Number2 = %d",num2);
return 0;
}
void swap(int *a,int *b){ /* pointer a and b points to address of num1 and num2 respectively */
int temp;
temp=*a;
*a=*b;
*b=temp;
}
<强>说明:强>
内存位置num1 and num2
的地址传递给函数,指针*a and *b
接受这些值。因此,指针a和b分别指向num1和num2的地址。当指针的值改变时,存储器位置中的值也相应地改变。因此,对*a and *b
所做的更改反映在主要功能的num1 and num2
中。
这种技术在C编程中称为引用调用。