示例程序:
#include <stdio.h>
int main() {
int x = 0;
printf("%p", &x);
return 0;
}
我读到大多数机器都是字节可访问的,这意味着只有一个
字节可以存储在单个内存地址上(例如,0xf4829cba 存储值 01101011
)。假设 x
是一个 32 位整数,那么对变量的引用不应该返回四个内存地址,而不是一个吗?
请 ELI5,因为我现在很困惑。
非常感谢您的宝贵时间。
-马特
最佳答案
您得到的地址(不是“引用”)是存储变量的内存的开头。然后,该变量将根据其类型占用所需的字节数。因此,如果 int
在您的目标体系结构中是 32 位,您获得的地址是用于存储该 int
的四个字节中的第一个。
+−−−−−−−−+ address−−−>| byte 0 | | byte 1 | | byte 2 | | byte 3 | +−−−−−−−−+
关于c - 为什么对 int 的引用只返回一个内存地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51712929/