我们把计算机的内存看作是一条长街上的一排房屋,每座房子都可以容纳数据,并通过一个房号来标识。
计算机的内存由数以亿计的位组成,每个位可以容纳值0和1.由于一个位所能表示的值得范围太有限。所以单独的位的用处不大,通常许多位合成一组作为一个单位,这样就可以存储范围较大的值。这里有一幅图,展示了现实机器中的一些内存位置。
这些位置的每一个都被称为字节,每个字节都包含了存储一个字符所需要的位数。在许多现代的机器上,每个字节包含8个位,可以存储无符号值0至255.(我的理解是这就是我们所说的char类型)上图这张图并没有显示这些位置的内容,但内存中的每个位置总是包含一些值,每个字节通过地址来标识,如上图方框上面的数字所示。
为了存储更大的值,我们把两个或更多哥字节何在一起作为一个更大的内存单位,例如,许多机器以字为单位存储整数,每个字一般由两个或4个字节组成,其实也就是我们所说的int等类型。
由于它们包含了更多的位,每个字可以容难的额无符号整数范围更大。
注意:尽管一个字包含了4个字节,它仍然只有一个地址,至于它的地址是它最左边的那个字节还是最右边的那个字节的位置,不同的机器有不同的规定。另一个需要注意的是硬件事项是边界对齐问题,在要求边界对齐的机器上,整型值存储的起始位置只能是某些特定的字节,通常是2或4的整数,但这些问题是硬件设计者的事情,它们很少影响C程序员。我们只对两件事情感兴趣:
1 内存中的每个位置由一个独一无二的地址来标识。
2 内存中的每个位置都包含一个值。
变量的值就是分配给该变量的内存位置所存储的数值,即使是指针变量也不例外。指针变量的值是一个内存地址。用*取指针变量的值得到的就是该指针变量指向的内存地址存储的值。
时间: 2024-10-12 14:46:05