为什么在单变量上使用Pointer

时间:2015-10-18 07:19:31

标签: c pointers

请准确解释为什么我在非数组变量上使用指针,例如int我知道指针变量存储指定变量的地址,但为什么我们只需要单个变量的地址,这样做有什么好处?

int a = 10;

int *ptr_a = &a;

谢谢!

2 个答案:

答案 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编程中称为引用调用。