int* p;
printf("%d", sizeof(p));
答案是4个字节! 我正在使用C
如何声明一个大小的指针(2个字节)?它取决于编译器吗?据我所知,C和ansi C是相同的......这在ansi C中会有所不同吗?
答案 0 :(得分:2)
您是否正在使用Turbo C编译器?
指针和int的大小在Windows 32位机器上的Turbo C编译器中是2个字节。因此指针的大小是编译器特定的。但通常大多数编译器都支持32位中的4字节指针变量和64位机器中的8字节指针变量
答案 1 :(得分:2)
C标准故意不指定指针的大小。
甚至允许不同类型的指针大小不同:sizeof(type1*)
不一定与sizeof(type2*)
相同!
这允许C将最常规的目标定位到最奇特的架构。
最后,您的程序行为未定义:您应该使用%zu
作为sizeof
返回的格式化程序。 (请注意,sizeof(p)
是定义的,尽管p
未初始化 - 这是因为sizeof(p)
在编译时被评估。)