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

关于C语言变量内存分配一些自己的理解。

2017-11-22 19:01 239 查看
        以下仅仅是自己通过看书后的,自己的一些理解,有什么问题欢迎指出。



首先说下内存,什么是内存,什么是地址? 打个比方,把内存比作一栋楼,这栋楼里面有很多房间,每个房间都有标号。那么,每个房间里面的空间就是我们存放东西的地方,房间的标号就是我么所说的地址。如果我们想要在这栋楼拿出一个东西,那么得首先知道房间的标号。所以也就是我们想在内存中取出一个东西,首先必须知道地址。还有两个名词必须解释下:寻址空间和寻址能力。寻址空间就是房间的个数,寻址能力,就是房间里面能放多少东西。某一栋楼(内存)有32个房间(寻址空间为32),每个房间只能放4台仪器(寻址能力为4)。

    好了内存说完了,说下C语言中的问题,之前学习C语言,自已一直疑惑不解,比如我定义了一个变量:int a=2; 那么我在想,a在内存中到底是个什么东西,其实,在你定义一个变量之后,编译器在编译时会首先会进行扫描,然后生成一个
符号表,这个符号表信息量很多,有变量符号地址,作用域,类型等等。符号表中的地址就是这里要关注的东西。意思就是,定义了一个 整形变量 a,  那么它在内存中肯定占有一定的空间,这个空间(房间)肯定会有一个地址(标号)。假如后面想改变的a的内容,a=3; 首先找到a 的地址(符号表),在把3个值写入这个地址。所以其实a这个东西,其实就是个地址,但是我们为什么把a打印出来不是a的地址,而是a的值呢?这里还关系到寻址方式的问题,在这里一般用的间接寻址,意思就是把
a当作地址,取出这个地址中的东西。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: