c - 为什么对 int 的引用只返回一个内存地址?

标签 c memory reference

示例程序:

#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/

相关文章:

c - 在 SCO Unix OS 中获取用户输入时出现问题

java - 好的内存类清理练习?

c++ - 保留超出范围的类的数据?

C 和指针符号

c - C 中没有任何空叶的树

c++ - 在 C++/Linux 中设置单调时钟的一些技巧

objective-c - 自由函数在 c/objective-c 中不起作用

java - java中类的引用

c++ - 我需要使用 ref 和 make_pair 来返回引用吗?

MySql - 你能有在多表中自动更改的引用吗?