| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1693 人关注过本帖
标题:再出一小题, 32位机器下的指针,always 是4字节吗?
只看楼主 加入收藏
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
结帖率:100%
收藏
 问题点数:0 回复次数:5 
再出一小题, 32位机器下的指针,always 是4字节吗?
如题。

如果不是,给出特列。
搜索更多相关主题的帖子: always 指针 机器 字节 
2010-12-20 13:53
马后炮
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:156
专家分:560
注 册:2010-12-17
收藏
得分:0 
蛋没地方疼了
收到的鲜花
  • BlueGuy2010-12-20 14:24 送鲜花  45朵  
  • Devil_W2010-12-20 15:42 送鲜花  -2朵   附言:傻吊
  • 卧龙孔明2011-02-16 18:33 送鲜花  -3朵  

樱之雪,晓之车
2010-12-20 14:04
无尽苍穹
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:44
专家分:101
注 册:2007-3-28
收藏
得分:0 
指针的长度并非跟计算机字长有关,准确地说,是跟段大小和编译模式有关。你所看到的16位cpu指针两个字节、32位cpu指针四个字节其实是一种错觉。

指针所指向的实体,无非在_code、_data、_bss、const和stack段,指针的值是这些段的段内偏移,段内偏移结合段寄存器的段值(实模式)或者段描述符(保护模式)构成实际的物理地址。VC等编译器工作在保护模式,在保护模式中,一个段最大可以是4G,其偏移量由32位表示,因此VC的指针是四个字节;而tc2.0等编译器工作在实模式,一个段最大64k,偏移量以16位表示,因此在mini、small、medium三种模式下,tc2.0的指针通常是两个字节,运行在windows中的tc2.0工作在虚拟8086模式,这个模式通过分页把tc2.0的工作空间映射回实模式使用的第一个1M内存,段大小仍然是64k,因此指针大小仍然是16位,但是,有一点不同的是,工作在compact、lardge和huge模式的指针,默认是包含16位的段值的,因此这三个模式下的指针,默认是四个字节的,当然,在mini、small和medium模式中也可以使用包含段值的指针,tc2.0的非标准扩展关键字far和huge就是起到这个作用,使用far和huge修饰的指针例如char huge*p;其长度为四个字节。


摘自网上的一段原话!保存了很久。
2010-12-20 14:39
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
有点深了  汇编还没学多少.......我得抓紧

                                         
===========深入<----------------->浅出============
2010-12-20 18:05
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
这里有人能给出合理解释?

就这个问题?
2010-12-20 18:34
immike
Rank: 2
来 自:沙坡村驾校
等 级:论坛游民
帖 子:16
专家分:23
注 册:2010-12-17
收藏
得分:0 
那么是不是现在64位系统指针的长度也会变化?
2010-12-20 19:22
快速回复:再出一小题, 32位机器下的指针,always 是4字节吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054140 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved