二、变量与内存的关系 现在我们来看C 变量在内存中的样子。我们使用自动变量(局部变量)来讲解。 int a = 5; //假设a存储在编号为0x02开始的位置 说明: 内存可以存储数据,所以我们把每个字节当做是一个“箱子”。数据存入内存就好比在箱子里面放数据 但是C语言的不同数据类型占用的字节数是不都一样的,所以,每种数据类型占的”箱子”的个数不都一样。 比如char型,只要一个字节就够了,所以一个字符只需一个“箱子”。 而int型需要4(一般是4个字节)个“箱子”才放得下。 double型则需要8个“箱子”。
来分析上图中用橙色框起来的4个字节的内存块,这里就存储了a这个变量。 我们从4个方面去讨论这个内存块: 1、内存的数据 我们的变量赋值为5,所以内存的数据就是 0000 0000 0000 0000 0000 0000 0000 0101 (大端模式) 每个字节地址: 0x02 0x03 0x04 0x05
2、*内存的名字 (对于我们的程序使用的内存来说,并不是每一个内存块都有名字) 名字就是变量名a 3、内存的地址 变量a占用了4个字节,那么,哪一个字节的地址,才是变量a的地址呢?答:第一个低地址字节的地址,也就是0x02 4、内存的宽度 这里的a变量占用了4个字节,这就是他的宽度。 这里提一下,为后面讲指针的宽度做铺垫 :)
|