
非常规入门C语言:4、地址与指针|当前报道
在上一章中,众多基本数据类型与基本数据结构,我们惟未谈及地址。就是以下这个表格:
下表通用64位计算机中的为无符号数据类型(中括号意为可省略)
(资料图)
首先,我们要注意到,地址是属于无符号数据类型的,而且还有一个限制:这个表格的适用平台是“通用64位计算机”。
当然了,现在谁还在用32位的系统和32位的CPU呀!火车站?政府办公室?
下面,我们就谈谈地址这个调皮鬼,并且说说,指针到底是个啥!
每一个人都会有一个属于自己的名字。但是在一些特殊的地方,人非常多,还可能会重名,记名字反而不是一件轻松的事儿,根据每个人共有的、稳定的特征赋予一个“编号”,这些编号是有一定的规律的,这时无需关心你到底是谁,只需要按照编号进行列队,就能够随机找到你。而这个编号就可以说是你在这个列队中地址。
如果人数实在是太多呢?那就分队,比如每一队20个人。这时再找人,只需要随机说第几队、第几号就能够找到对应的人。
如果人数还是很多呢?比如说......全国人都在一个班级里......那就划省划市划县划乡划村(或者划街道划小区划楼划楼层)。
也就是说,组成整体的单位越多,单位所对应的地址可能会越长。
但是地址也是数据呀,总得有地方记录下来吧......所以你的身份证上必要有一长串记录的是你的住址,还会有一个在全国范围内唯一的编号:身份证号码。这就是你的“地址”。
所以,在计算机中,地址也是一样的,也需要存储下来,同时,还需要它参与运算。所以哪里运算速度最快,当然就存储在哪里喽。计算机中,除了CPU,最快的当然是寄存器了。所以找几个寄存器专用于存储地址,那这样的寄存器就称为“地址寄存器”,不过这个名字好像不大好听。那就换个名字呗!既然地址的作用是找数据,那也就是说指出数据在哪喽,就叫“指针”吧!
如果一个数据很长,那简单,我们找到它开始的地址,存在寄存器中,再找出它结束的地址。这样一来,存储开始地址的那个寄存器可能不会一直变化,但是存储结束地址的那个寄存器可能会一直在变化,那也起个名字吧,这样说也太麻烦了,啰里啰唆的。存储开始地址的寄存器称为“基地址指针寄存器”,存储结束地址的寄存器称为“偏移地址指针寄存器”,也可以叫做“堆栈指针寄存器”。这样一来,就有了两个专门指示数据开始地址与结束地址的寄存器了。
但是,还不行,因为地址还需要指示数据呀,地址本身没有用的呀。所以,我们还需要几个和数据本身相关的指针寄存器。几个呢?
根据最基本的数学运算,我们可以知道,不管多复杂的运算,都可以看作是两个基本式之间运算的复合。也就是说,代价最低的情况下,一般运算最多需要两个基本式。这也就意味着,我们只需要两个寄存器就可以处理大部分的数据。
至于怎么运算,那是累加寄存器的事儿,地址寄存器只负责和地址相关的事儿。
那......两个地址之间最有可能发生的情况就是数据的转移,因为在内存中进行算术运算那也太慢了,而数据转移完全就是把操作指令提示给内存就完事儿了。所以从第一个寄存器转移到第二个寄存器中去,那第一个寄存器就叫做“源指针寄存器”,第二个寄存器就叫做“目的指针寄存器”。
那这些寄存器能存多大的地址呢?那就得看CPU能存多大的数,16位CPU最大处理16位的数,32位CPU最大处理32位的数,64位CPU最大处理64位的数......
很好,但是Intel不同意,他在8086这个16位的CPU上改动了一下,针对地址,他加了4根地址总线,也就意味着,可以用20位地址,也就是说,8086的地址范围变成了2^20=1M。但是8086的寄存器都是16位的!那就“拼单”嘛。
16加4不就是20吗?分别用两个寄存器来标识,也就说,用两个寄存器给内存分组了。一般情况下,都是大数加小数,所以16位的大数一般也就放在段寄存器,而剩下的数就放在段偏移地址寄存器中。
根据段(Segment)存放数据的特性不同,分为4个最基本的段:代码段(Code)、数据段(Data)、堆栈段(Stack)、附加段(Extension)。这些都是基地址,那么偏移地址呢,放哪里都可以,无所谓,问题不大。只要段基地址+偏移地址一共是20位,其他你高兴就好。
可以看到,地址就是指针,指针就是地址。同时地址也可以被存储,也就是可以像看待数据一样看待地址,地址也是一种数据。但地址的特殊地方在于地址本身没啥用,但在地址上的那个数据才是我们需要的。
需要注意的是,在一些“系统”中,指针的宽度可能会被“修饰”,即无论是32位系统还是64位系统,在这些“系统”中,指针的宽度都是32位。但是在通用的系统平台中,指针的宽度一般都是CPU的数据宽度,即32位系统中的指针宽度一般是32位,64位系统中的指针宽度一般是64位。
标签:
-
14
2023-06【保姆级教程-淘宝虚拟产品运营】第二章 第1节:内功打磨 环球热闻
第一章我们讲述了怎么开店,怎么进行前期的基础设置,那第二章我们 -
14
2023-06视焦点讯!诵读诗文启智润心 传承经典培根铸魂--文峰区东风小学经典诵读伴成长主题实践活动
为教育和引导青少年学生读经典、学经典、爱经典,促进青少年学生全面发 -
14
2023-06当前焦点!中国非化石能源发电装机容量占比超50%
据新华社上海电(记者何欣荣、桑彤)记者从11日举行的首届上海国际碳中 -
14
2023-06世界即时看!笔记本电脑黑屏了怎么恢复正常?笔记本电脑电量不足会导致黑屏吗?
笔记本电脑黑屏了怎么恢复正常?方法一、1 笔记本能打开,但是黑屏,风


全球实时:“忧居”变“优居”,今年我市计划改造191户农村危房 希望的田野上“改”出幸福的家
