【问题标题】:why use Pointer on single variable为什么在单个变量上使用指针
【发布时间】:2015-10-18 07:19:30
【问题描述】:

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

int a = 10;

int *ptr_a = &a;

谢谢!

【问题讨论】:

标签: c pointers


【解决方案1】:

虽然我猜你正在查看的代码应该会给你一个答案......这样做的典型原因是为了将它传递给一个应该能够修改这个变量的函数。

如果您只是调用foo(a),函数foo() 将接收变量的值 作为参数,因此它有自己的副本。指针也会发生同样的事情,但指针当然仍会指向您的原始变量,因此该函数可以通过取消引用指针来修改它 (*a = 42;)。

【讨论】:

    【解决方案2】:

    通过指针实现引用调用机制 请在 sn-p 下面通过删除指针进行编译并注意输出。

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

    【讨论】:

    • 这种技术在 C 编程中称为引用调用。 不,它不是。 C 不支持引用调用。这是按值传递地址。
    • @DavidHeffernan 但在此链接中javatpoint.com/call-by-value-and-call-by-reference-in-c 明确提及引用调用
    • C 没有引用调用,只有值调用,这是众所周知的事实
    • @DavidHeffernan 好的,但是你能不能给我一些资源,让我可以读到这个
    • 只需在网络上搜索这些术语
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多