我是一名大学生,目前正在学习计算机科学和编程,在阅读Stanley B. Lippmann的c ++入门第2章时,我脑子里浮现出一个问题,那就是,如果计算机内存被分成称为字节的小存储位置(8位)并且每个字节的内存被分配一个唯一的地址,一个整数变量占用4字节的内存,不应该是我的控制台,当使用地址运算符打印出4个唯一的地址而不是1?
我怀疑教科书是不正确的,他们是我对计算机内存的理解中的一个缺陷.因此,我想对我所面临的这个问题作出积极的澄清.在此先感谢人:)
不应该我的控制台,当使用地址运营商打印4个唯一的地址而不是1?
没有.
对象的地址是其起始字节的地址.4字节int具有唯一的地址,即其第一个字节的地址,但它也占用了接下来的三个字节.接下来的三个字节有不同的地址,但它们不是地址int.
每个变量都位于某个内存中,因此每个变量都会获得一个可以通过address-of运算符获得的地址.
多字节变量中的每个字节也都有它们的地址无关紧要,address-of运算符为你提供了一个指向变量的指针.
一些"图形"有希望解释它...
假设我们有一个int名为变量i的类型,并且该类型int需要四个字节(32位,这是常用的int).那你有类似的东西
+---+---+---+---+ | | | | | +---+---+---+---+
有些地方是为四个字节保留的,编译器会为你处理所有这些并不重要.
现在,如果你使用的地址运算符来获得一个指针的变量i,即你这样做&i,那么你有类似的东西
+---+---+---+---+ | | | | | +---+---+---+---+ ^ | &i
表达式&i指向变量的字节序列开始的内存位置.它不可能给你多个指针,每个字节一个,这是真的不可能,也不需要.