一个指针变量到底占几个字节.doc
《一个指针变量到底占几个字节.doc》由会员分享,可在线阅读,更多相关《一个指针变量到底占几个字节.doc(3页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一个指针变量到底占几个字节?问:一个指针变量到底占几个字节?答:因机器不同所占的字节数也有所不同。在32位的机器上,一个指针变量占4个字节,在64位的机器上,一个指针变量占8个字节。先看一个例子:#includeInt 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
2、类型,还定义了3个指针变量p、q、r,分别指向char、int、double类型。然后输出这3个指针变量的值。按理说,char占1个字节,int占4个字节,double占8个字节,当然分别指向它们的指针变量所占的字节数应该是不同的。可是,果真是这样吗?编译后运行,我们得到结果:4 4 4 。也就是说,分别指向3个不同类型的指针变量它们所占的字节数是相同的,都是4个字节。这是为什么呢?首先,我们来看一看ch 、i、x这3个变量在内存中是如何存储的。xriqchpP指向ch,q指向i,r指向x,ch占1个字节,i占4个字节,r占8个字节,那么是不是p指向了1个字节,q指向了4个字节,r指向了8个字
3、节呢?当然不是。首先要明白的是,在硬件层面上,最小的单位不是位,而是字节。所以地址不是以位来表示的,而是以字节来表示的。以上图的x变量为例。因为x占了8个字节,所以在地址编号上,它有8个编号。(一个字节一个编号嘛),既然r指向了x,那么r是不是同时指向了这8个编号呢?不是。r是指向了这8个编号当中的第一个编号。即x的首地址。我们一般都是以一个变量的首地址来表示整个变量的。同理,q指向了i,但它并不是同时指向了4个字节,只是指向了i的首地址。ch就不用说了,因为它只占一个字节。为什么r明明只指向了1个字节,但是它却可以表示8个字节?为什么q只指向了1个字节,但是它却可以表示4个字节?我为什么不能
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一个 指针 变量 到底 几个 字节
限制150内