看一下这段 C 代码。
#include <stdio.h>
int main(void)
{
int v[3] = {1, 2, 3};
printf("%d\n", v);
printf("%d\n", v + 0);
printf("%zu\n", sizeof(v));
printf("%zu\n", sizeof(v + 0));
printf("%zu\n", sizeof(v + 1));
printf("%zu\n", sizeof(v + 2));
return 0;
}
以下是其中一个输出:
-587904464
-587904464
12
8
8
8
我认为v与v+0是相同的。
它们都指向数组v[3]中的第一个元素。
因此,v和v + 0具有相同的值。
但为什么它们却无法持有相同的字节呢?(sizeof(v)和sizeof(v + 0)不同)
%d
打印地址。你必须使用%p
并将参数转换为指向void的指针。 - Jens