【发布时间】:2012-12-19 07:13:09
【问题描述】:
//观察到这段代码的输出是 4 4 2 ?我不明白为什么 ptr3 是 2?请帮助
#include<stdio.h>
int main()
{
char huge *near *far *ptr1;
char near *far *huge *ptr2;
char far *huge *near *ptr3;
printf("%d, %d, %d\n", sizeof(ptr1), sizeof(ptr2), sizeof(ptr3));
return 0;
}
【问题讨论】:
-
什么系统?什么编译器?这不是标准的 C 语法。
-
near、far和huge表明它是某种古老的、过时的基于 DOS 的编译器。也许是 Borland C? -
标准将
sizeof(char)定义为1。您没有其他保证。 -
在这种情况下,答案是“去阅读你的编译器文档”。
-
@E F:是什么让你相信那个指针的大小
2是不寻常的,以至于你甚至问过这个问题?为什么不2?在某种程度上,这就像问为什么2 + 2等于4。如何回答这样的问题?