2024年6月15日发(作者:)

一个指针变量到底占几个字节?

问:一个指针变量到底占几个字节?

答:因机器不同所占的字节数也有所不同。在32位的机器上,一个指针变量占4个

字节,在64位的机器上,一个指针变量占8个字节。

先看一个例子:

#include

Int main(void)

{

char ch =’A’;

int i = 99;

double x = 66.6;

char *p = &ch;

int * q = &i;

double * r =&x;

Printf(“%d %d %d n”,sizeof(p),sizeof(q),sizeof(r));

return 0;

}

上述代码中,定义了3个变量,分别是char、int、double类型,还定义了3个指

针变量p、q、r,分别指向char、int、double类型。然后输出这3个指针变量的值。

按理说,char占1个字节,int占4个字节,double占8个字节,当然分别指向它

们的指针变量所占的字节数应该是不同的。可是,果真是这样吗?编译后运行,我们得到

结果:

4 4 4 。

也就是说,分别指向3个不同类型的指针变量它们所占的字节数是相同的,都是4

个字节。

这是为什么呢?

首先,我们来看一看ch 、i、x这3个变量在内存中是如何存储的。