指针的大小在C中何时等于2字节而不是4字节?
答案是4个字节! 我用的是C指针的大小在C中何时等于2字节而不是4字节?,c,pointers,size,C,Pointers,Size,答案是4个字节! 我用的是C 如何声明大小为(2字节)的指针?它依赖于编译器吗?据我所知,C和ansi C是一样的。。这在ansi C中会有所不同吗?也许您使用的是Turbo C编译器 在windows 32位计算机上的Turbo C编译器中,指针和int的大小为2字节。所以指针的大小是特定于编译器的。但一般来说,大多数编译器实现为支持32位的4字节指针变量和64位机器的8字节指针变量也许您使用的是Turbo C编译器 在windows 32位计算机上的Turbo C编译器中,指针和int的大小
如何声明大小为(2字节)的指针?它依赖于编译器吗?据我所知,C和ansi C是一样的。。这在ansi C中会有所不同吗?也许您使用的是Turbo C编译器
在windows 32位计算机上的Turbo C编译器中,指针和int的大小为2字节。所以指针的大小是特定于编译器的。但一般来说,大多数编译器实现为支持32位的4字节指针变量和64位机器的8字节指针变量也许您使用的是Turbo C编译器
在windows 32位计算机上的Turbo C编译器中,指针和int的大小为2字节。所以指针的大小是特定于编译器的。但一般来说,大多数编译器实现为支持32位的4字节指针变量和64位机器的8字节指针变量。C标准故意不指定指针的大小 它甚至允许不同类型的指针大小不同:
sizeof(type1*)
不一定与sizeof(type2*)
相同
这允许C将最常规的体系结构定位到最奇特的体系结构
最后,您的程序行为是未定义的:您应该使用
%zu
作为sizeof
返回的格式化程序。(请注意,sizeof(p)
是在p
未初始化的情况下定义的,这是因为sizeof(p)
是在编译时计算的。)C标准故意不指定指针的大小
它甚至允许不同类型的指针大小不同:sizeof(type1*)
不一定与sizeof(type2*)
相同
这允许C将最常规的体系结构定位到最奇特的体系结构
最后,您的程序行为是未定义的:您应该使用
%zu
作为sizeof
返回的格式化程序。(注意,sizeof(p)
是在p
未初始化的情况下定义的,这是因为sizeof(p)
是在编译时计算的。)它依赖于平台。在现代C中,正确的打印方式是printf(“%zu\n”,sizeof(int*)
,则sizeof
的返回值的类型不是int
。这里真正的问题是:您(认为您)为什么需要一个2字节大小的指针?您可以使用8086
paltform声明一个16位指针,并在指针附近声明一个指针;)@LPs:确实可以:+32767,它依赖于平台。在现代C中,正确的打印方式是printf(“%zu\n”,sizeof(int*))
,则sizeof
的返回值的类型不是int
。这里真正的问题是:您(认为您)为什么需要一个2字节大小的指针?您可以使用8086
paltform声明一个16位指针,并在指针附近声明一个指针;)@LPs:确实可以:+32767
int* p;
printf("%d", sizeof(p));