码迷,mamicode.com
首页 > 编程语言 > 详细

【C语言学习】指针再理解(一)

时间:2014-06-22 17:29:12      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:内存   存储   编译器   指针   c语言   

★内存和地址

内存的基本单位是字节,那么内存就可以按字节进行编址,就是给组成内存的所有连续的字节安排地址。其中一个最恰当的比喻就是房子与门牌号,假设有20间连续的房子,从最左边(或者左右边)开始分配门牌号1~20,给内存中字节分配的地址就相当于门牌号,字节就相当于房间。字节的容量只能存储一个字符。那么,内存是如何存储比字符更大的数据呢,比如:整型数据、浮点型数据?

★更大的内存单元

为了存储更大的数据,就会把两个字节或者跟多的字节合在一起组成更大的内存单元。比如内存可以以“字”为单位来存储整型(一个字一般由2个或者4个字节组成)。

如图所示:

bubuko.com,布布扣

                                                               以字节为单位

bubuko.com,布布扣

                           以字为单位(假设四个字节组成一个字)

以“字节”为单位时,每个字节都会有一个地址,那么当以“字”为单位时,它的地址该如何确定呢?这一个字该有几个地址?硬件又该怎样读取他们的数据呢?

尽管一个字包括四个字节,但是却只有一个地址。至于它到底是四个字节中的哪一个地址,这又会涉及到一个概念:大小端存储模式

★大小端存储模式

大端模式,是指数据的高位,保存在内存的低地址中,而数据的低位,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向

大增加,而数据从高位往低位放;

小端模式,是指数据的高位保存在内存的高地址中,而数 据的低位保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值

高,低地址部分权值低,和我们的逻辑方法一致。

★地址与内容

bubuko.com,布布扣

如上图所示,每个字中都储存了一个整数,如果我想要存取某个字中的数据,那么我必须记住这个字所对应的地址即可。但如果到了实际当中,这种方法就变得不可行了,因为记住每个字的地址显然是非常麻烦的事,因此就有一个好的办法来代替:通过名字来访问内存的位置。如图所示:

bubuko.com,布布扣

这些字母就是我们所说的变量。但是,字母与内存位置之间的关系并不是硬件提供的,而是编译器给我们实现的。编译器就像是一个中间层,对我们而言,我们看到的只是字母。对硬件而言,还是通过地址访问内存位置。编译器所完成的就是将字母与地址连接起来

bubuko.com,布布扣





【C语言学习】指针再理解(一),布布扣,bubuko.com

【C语言学习】指针再理解(一)

标签:内存   存储   编译器   指针   c语言   

原文地址:http://blog.csdn.net/xgsilence/article/details/32391487

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!