C,在C中打印字符指针的大小

时间:2019-03-15 10:04:03

标签: c

char a[]="hello";
char *p=a;
printf("%d",sizeof(p));

预期输出为4或8,但我们得到的输出为2。

使用TurboC3

1 个答案:

答案 0 :(得分:0)

我强烈建议“汇编语言:杰夫·邓特曼(Jeff Duntemann)的循序渐进 ”(不是整本书,只是内存模型的部分)。

指针的大小取决于它必须处理多少内存。您期望有四个字节,即32位,它可以处理4 Gig的内存。当您进行一些研究时,您会发现在开发Turbo C(八十年代)时,任何个人计算机都没有4 Gig内存。

因为没有那种容量的内存(最大容量为几兆字节),即使在那之后,对于新的x86 CPU和更高版本的CPU,大多数应用还是太“轻”(为了向后兼容)最终硬件(当然包括内存),应用程序被分配了该内存的一部分(如@Nadim所说的Turbo C为64k)。因此,当您已经知道永远不会使用最后2个字节时,为什么还要烦恼将指针的大小设为4个字节。