【问题标题】:Pointers addresses behaviour [duplicate]指针解决行为[重复]
【发布时间】:2015-07-22 17:02:32
【问题描述】:

例如:

int *ptr

&ptr 和 ptr 有什么区别 因为当我这样做时

printf("ptr= %d  but &ptr=%d",ptr,&ptr);

结果不一样。

【问题讨论】:

  • &xx 有什么区别(其中xany 变量)?
  • 我投票结束这个问题,因为它是在问为什么 1 不是 2
  • 这里是关于同一问题的附加信息。 stackoverflow.com/a/25044661/5135243
  • 只需写void *x; x = &x; 即可满足您的期望。顺便说一句,不要将 printf() 指针作为整数。

标签: c pointers


【解决方案1】:

ptr 是指针值(它是一个地址)。

&ptr是指针对象的地址。

要打印你必须使用的指针值:

printf("ptr= %p  but &ptr=%p", (void *) ptr, (void *) &ptr);

【讨论】:

    【解决方案2】:
    #include <stdio.h>
    
    int main() 
      {
              int *ptr;
              int i=5; 
              ptr=&i;
              printf("ptr= %p  but &ptr=%p",(void *)ptr,(void *)&ptr);
              return 0;
       }
    

    在此代码中ptr 将给出i 的地址,&amp;ptr 将显示存储ptr 值的地址。要查看i 的值,您可以打印*ptr

    【讨论】:

      【解决方案3】:
      int *ptr;
      

      删除指针变量(指针表示指向其他内存位置的变量)

      printf("ptr= %d  but &ptr=%d",ptr,&ptr);
      

      使用 %d 打印 ptr 会给出变量 ptr 的值,该值将是一个内存位置,如果指针未初始化,它将给出一些无关紧要的值

      通过 %d 打印 &ptr 给出指针变量 ptr 的地址,该地址将是分配变量 ptr 的内存位置

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-10
        • 1970-01-01
        相关资源
        最近更新 更多