您的位置:首页 > 编程语言 > C语言/C++

C和内存

2016-04-11 11:04 295 查看
1.当声明一个变量时,编译器就为这个变量申请了若干大小(视该变量类型而定,如32位系统中申请了整形变量,则内存大小为4个字节)

的内存用来存储该变量的内容,同时将该变量的名称和该变量在内存中的地址关联起来,这样程序在访问变量时,相当于访问该内存地

址,如对变量a进行赋值操作时,只需“a=0”即完成对a的初始化,实质程序已经在变量a的内存地址上,对该变量的内容进行写操作。

程序之所以能找到a存储内容的地址,就是因为编译器在我们声明变量时,为我们将变量名a和该变量的内存地址关联了起来,从而我们

可以很方便的访问该变量了。

2.对内存的理解。内存其实就像一个酒店,假设该酒店每个房间有8张床,申请一个变量时,则相当于旅游组团(该团的人数的多少就相

当于数据类型)入住了酒店,比如申请了一个int类型的变量,则相当于该团需要在该酒店中申请4个房间,每个房间可睡8个人,共32人。

而每个房间都是有房间号的,这个房间号就好比内存地址(如0x30000000),我们通过该房间号就可以找到房间里的人。房间里的人本来

是8个人的,由于入住酒店之后,有些人想出去逛街,有些人累了想要在房间休息,于是就出现房间里有的床是空的,有些床是有人的。

这可以类比到变量的内容,一个int变量有4个字节(byte),一个字节有8个位(bit),bit就好比房间里的床,有人则为1,无人则为0。

当然这只是个不恰当的类比,只能用来帮助对内存的理解。实际上,从硬件角度看,内存其实是由许多的门电路组成,每个门电路可封装

为一个bit,该bit的内容只有0或1(取决于上层的赋值操作),而每8个bit可组成一个字节,在32位系统中,每4个字节则可以用来存放一

个int数据了。每个字节在内存中都有地址,就像门牌号,而具体该地址里面的门电路内容是什么(0或1),则由上层程序赋值决定。

3.在程序中,几乎可认为都是围绕内存来进行的,可以说内存就是程序的核心。如果在程序中对内存处理不当,则会导致程序崩溃。

事实上,所谓的数据结构就是为了更好管理数据,在内存中,这些数据相互联系,只要知道了其中一个数据的内存地址,则可以通过

各种方式(数组,结构体,队列。。。)去访问其他的数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C语言内存