首页 > 解决方案 > 事物是如何存储在内存中的

问题描述

我刚开始学习 C,我了解到内存的每个字节都有一个地址。

我的问题是,占用 2 个字节内存的整数的地址是什么?

如果我们有一些需要 9 位内存的数据怎么办?我认为内存是一长块大小为 1 字节的带有地址的盒子。9 位占据一个盒子和下一个盒子的 1/9,盒子剩下的 8/9 怎么办?

标签: ccomputer-science

解决方案


2018 C 标准在 6.2.6.1 2 中说:

除了位域,对象由一个或多个字节的连续序列组成,其数量、顺序和编码要么明确指定[在 C 标准中],要么由实现定义。

该标准允许使用位域实现灵活性。通常,连续的位域可以共享部分字节,或者实现可以将它们分开并留下一些未使用的位。

在 C 中获取对象的地址会产生一个指针。C 中的指针指向整个对象;当然,除了本身是单字节的对象之外,它们指向哪个字节没有区别。当指针转换为指向字符类型的指针时,结果是指向对象中最低寻址字节的指针(根据 6.3.2.3 7)。但是,这并不意味着原始指针是用该地址表示的。


推荐阅读