首页 > 编程知识 正文

c语言(C语言的内存与地址(C和指针))

时间:2023-05-05 19:58:56 阅读:121927 作者:2171

我们把计算机内存看成是长街上的一排房子,每个房子都可以容纳数据,用房间号识别。

计算机的内存由几亿位组成,每个位可以包含值0和值1。 因为能用1位表现的值的范围有限。 因此,单个位没什么用。 通常,许多位被分组为一个单位,因此可以存储范围较大的值。 这里有几个内存在现实机器中的位置示意图。

这些位置分别称为字节,每个字节包含存储字符所需的位数。 在许多现代计算机上,每个字节都包含8位,可以存储无符号值0到255。 (我理解这就是我们说的char类型。 )上图未显示这些位置的内容,但内存中的每个位置始终包含一些值,每个字节由地址标识。 如上图框上方的数字所示。

为了存储更大的值,请考虑两个或多个同级字节为什么一起成为较大的内存单位。 例如,许多机器以字为单位存储整数,每个字通常由2字节或4字节组成。 实际上是被称为int等的类型。

因为包含更多的位,所以每个单词可以接受的无符号整数范围更广。

注意:尽管一个字包含4个字节,但只有一个地址。 关于该地址是最左边的字节还是最右边的字节,规定因机器而异。 另一个需要注意的是,硬件问题是边界定位问题。 在需要边界对齐的机器上,整数值存储的开始位置只能是特定字节,通常是2或4的整数,但这些问题是硬件设计者的问题,对c编程人员几乎没有影响。 我们只对两件事感兴趣:

1内存中的每个位置由唯一的地址标识。

2内存中的每个位置都包含一个值。

变量的值即使是指针变量也不例外,而是存储在分配给该变量的内存位置的数值。 指针变量的值是内存地址。 *取指针变量的值后,即为保存在该指针变量所指的内存地址中的值。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。