【发布时间】:2020-06-08 02:35:11
【问题描述】:
我正在学习 CS 简介(CS50,哈佛),我们正在学习 C 中的类型声明。当我们声明一个变量并分配一个类型时,计算机会分配特定数量的位/字节(1 个字节用于 char , int 为 4 个字节,双精度为 8 个字节等...)。
例如,如果我们声明字符串“EMMA”,我们将使用 5 个字节,每个“char”使用 1 个字节,\0 空字节额外使用 1 个字节。
好吧,我想知道为什么 2 M 被分配单独的字节。计算机不能利用当前在内存中占用空间的字符或整数,并在它想要重用它时引用该特定插槽吗?
希望对此事进行一些教育(不要太深入,因为我对这个领域还很陌生)。
编辑:将一些位固定为字节——我的错
【问题讨论】:
-
例如,如果我们声明字符串“EMMA”,我们使用 5 位;你的意思是5个字节,关于你的问题,看看Data structure alignment
-
那么一个引用必须至少有一个地址可以找到真正的值——并且地址需要 4 或 8 个字节(32 位/64 位系统)
-
1 byte for char
-
基本上你想知道为什么它不能只存储“EMA”并记住使用M两次。但是它怎么会记得使用 M 两次呢?
-
这样想:为什么在一张纸上写“Hallo”而不是“Halo”时要写两个L?如果你跳过一个 L,你会节省纸张空间。除了现在这个词有不同的含义。因此,您必须通过在纸上写下以下内容来解释这一点:“在下面的文本中,将'Halo'替换为'Hallo'”。而且该文本占用的纸张空间比 L 多得多。