欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    一个指针变量到底占几个字节word资料3页.doc

    • 资源ID:33893372       资源大小:153.50KB        全文页数:3页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    一个指针变量到底占几个字节word资料3页.doc

    如有侵权,请联系网站删除,仅供学习与交流一个指针变量到底占几个字节【精品文档】第 3 页一个指针变量到底占几个字节?问:一个指针变量到底占几个字节?答:因机器不同所占的字节数也有所不同。在32位的机器上,一个指针变量占4个字节,在64位的机器上,一个指针变量占8个字节。先看一个例子:#include<stdio.h>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个变量在内存中是如何存储的。xriqchpP指向ch,q指向i,r指向x,ch占1个字节,i占4个字节,r占8个字节,那么是不是p指向了1个字节,q指向了4个字节,r指向了8个字节呢?当然不是。首先要明白的是,在硬件层面上,最小的单位不是位,而是字节。所以地址不是以位来表示的,而是以字节来表示的。以上图的x变量为例。因为x占了8个字节,所以在地址编号上,它有8个编号。(一个字节一个编号嘛),既然r指向了x,那么r是不是同时指向了这8个编号呢?不是。r是指向了这8个编号当中的第一个编号。即x的首地址。我们一般都是以一个变量的首地址来表示整个变量的。同理,q指向了i,但它并不是同时指向了4个字节,只是指向了i的首地址。ch就不用说了,因为它只占一个字节。为什么r明明只指向了1个字节,但是它却可以表示8个字节?为什么q只指向了1个字节,但是它却可以表示4个字节?我为什么不能说r表示的是从它指向的那个字节开始的4个?我为什么不能说q表示的是从它指向的那个字节开始的2个?这是由什么来决定的呢?答案是:这是由变量的类型来决定的。请看这一句:double * r =&x;因为我们在声明指针变量r时,是把它声明为一个double类型的变量。Double类型的变量在内存中就是占8个字节的,所以,虽然r指向的是x的首地址,但编译器会认为r表示的是从它指向的那个地址开始的8个字节所代表的变量。同理,因为q是一个int类型的指针变量,所以编译器会认为q表示的是从它指向的那个地址开始的4个字节所代表的变量。接下来:为什么p、q、r中只存放了1个字节的地址,但却都占了4个字节呢?这是因为第1个字节的地址只是一个编号,指针变量是存储那个编号的。为了存储那个编号,需要动用4个字节的存储空间。听起来似乎有点难以理解。你明明只有1个字节,为什么要用4个字节的空间去存储?这样不是浪费了3个字节吗?举一个形象的例子:有一个小区,有100幢房子,每幢房子的大小都是100平米。每一幢房子当然都有一个编号。第1幢房子的编号是1,第100幢房子的编号是100。所以,房子的大小和它的编号的大小并没有关系,并不是说房子越大,编号越大。同理,内存当中也有很多的编号,代表着不同的地址。越往后的地址编号越大。有的单元当中可能只存储一个字节,但因为这个单元的位置比较靠后,所以编号当然就大了。可是,为什么是4个字节呢?CPU内存.共32根地址总线在32位的计算机中,CPU是以32根地址总线来控制与内存的数据交换的。1根地址总线可以表示21=2种状态(1个0和1个1),2根地址总线可以表示22=4种状态,3根地址总线可以表示23=8种状态.32根地址总线总共可以表示232种状态,也就是说,它能够确定232个单元,或者说它有232个编号。因此,从第1个编号一直到最后一个编号,每一个编号都需要用32根线来表示,只不过每一个编号都需要用32根线的不同状态来表示。比如编号为0的单元其实是表示为00000.000000,共32个0,编号为1的单元其实是表示为00000.000001,共31个0和1个1。最后一个编号其实就是表示为11111.11111,共32个1。所以,从第1个字节一直到最后一个字节都需要用32位来表示。而一个字节是8位,即每个单元要用32/8=4个字节来表示。指针变量是保存一个变量地址的变量,它里面保存的是一个特殊的东西:地址,即内存单元。一个内存单元要用32个状态来表示,(32个0和1),一个0或1占用1个位,8个位是一个字节,所以当然要占用32/8=4个字节的空间。

    注意事项

    本文(一个指针变量到底占几个字节word资料3页.doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开