C和内存

来源:互联网 发布:网吧网络限速破解 编辑:程序博客网 时间:2024/05/19 21:02
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.在程序中,几乎可认为都是围绕内存来进行的,可以说内存就是程序的核心。如果在程序中对内存处理不当,则会导致程序崩溃。
事实上,所谓的数据结构就是为了更好管理数据,在内存中,这些数据相互联系,只要知道了其中一个数据的内存地址,则可以通过
各种方式(数组,结构体,队列。。。)去访问其他的数据。
0 0
原创粉丝点击