为什么它不是相同的内存地址?这是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不能有相同的地址吗?
答案 0 :(得分:3)
&pa
实际上是pa的地址,
pa
是pa的值,因此a的地址
它们是不同的。
答案 1 :(得分:1)
pa
是指针。该指针保存a
&pa
是指针pa
本身的引用(地址),当然它不同于该指针所保存的值。
您可能对数组感到困惑。数组仅贴于指针,它们本身不是指针。
int arr[5];
和arr == &arr
,但它们具有不同的类型。