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

  我们把计算机的内存看作是一条长街上的一排房屋,每座房子都可以容纳数据,并通过一个房号来标识。

    计算机的内存由数以亿计的位组成,每个位可以容纳值0和1.由于一个位所能表示的值得范围太有限。所以单独的位的用处不大,通常许多位合成一组作为一个单位,这样就可以存储范围较大的值。这里有一幅图,展示了现实机器中的一些内存位置。


这些位置的每一个都被称为字节,每个字节都包含了存储一个字符所需要的位数。在许多现代的机器上,每个字节包含8个位,可以存储无符号值0至255.(我的理解是这就是我们所说的char类型)上图这张图并没有显示这些位置的内容,但内存中的每个位置总是包含一些值,每个字节通过地址来标识,如上图方框上面的数字所示。


为了存储更大的值,我们把两个或更多哥字节何在一起作为一个更大的内存单位,例如,许多机器以字为单位存储整数,每个字一般由两个或4个字节组成,其实也就是我们所说的int等类型。



由于它们包含了更多的位,每个字可以容难的额无符号整数范围更大。


注意:尽管一个字包含了4个字节,它仍然只有一个地址,至于它的地址是它最左边的那个字节还是最右边的那个字节的位置,不同的机器有不同的规定。另一个需要注意的是硬件事项是边界对齐问题,在要求边界对齐的机器上,整型值存储的起始位置只能是某些特定的字节,通常是2或4的整数,但这些问题是硬件设计者的事情,它们很少影响C程序员。我们只对两件事情感兴趣:

1   内存中的每个位置由一个独一无二的地址来标识。

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


变量的值就是分配给该变量的内存位置所存储的数值,即使是指针变量也不例外。指针变量的值是一个内存地址。用*取指针变量的值得到的就是该指针变量指向的内存地址存储的值。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值