C指针不显示到同一地址吗? * pa = a; pa =&a; pa!=&pa

时间:2019-05-11 14:22:52

标签: c pointers

为什么它不是相同的内存地址?这是C语言。

  int *pa;    
  int a = 80;
  pa = &a; //save memory address from a to pa
  *pa = 1000; //assign value to that address; *pa and a have now the same value

%p... memory address
%d... decimal

  printf ("a: %d \n", a); //100    
  printf ("*pa: %d \n", *pa); //100
  printf ("pa: %p \n", pa);   //0x7ffcd1370c54
  printf ("&a: %p \n", &a);   //0x7ffcd1370c54
  printf ("&pa: %p \n", &pa); //0x7ffcd1370c60

&pa总是比pa多“ 6”。

pa,&pa和&a不能有相同的地址吗?

2 个答案:

答案 0 :(得分:3)

&pa实际上是pa的地址, pa是pa的值,因此a的地址

它们是不同的。

答案 1 :(得分:1)

pa是指针。该指针保存a

的引用(地址)

&pa是指针pa本身的引用(地址),当然它不同于该指针所保存的值。

您可能对数组感到困惑。数组仅贴于指针,它们本身不是指针。

int arr[5];

arr == &arr,但它们具有不同的类型。