当我声明一个变量
char buf[512];
&buf
是什么意思?
似乎等于buf
:
printf(" buf : %p %p\n", (void *) buf, (void *) &buf);
打印:
buf : 0x7ffda6053fe0 0x7ffda6053fe0
答案 0 :(得分:0)
它是数组中第一个元素的地址(即buf [0]的地址)与数组本身的地址(即buf)。它们相等并不奇怪。
答案 1 :(得分:0)
地址相同,因为数组在传递时会衰减为指向第一个元素的指针,另一方面,地址运算符&
会获得数组的地址,即第一个元素的地址和数组本身的地址相同。
使用%p
代替%d
来打印地址:
printf(" buf : %p %p\n", (void *)buf, (void *)&buf);