c++ - C/C++ 中的指针和转换

标签 c++ c pointers casting endianness

我对这种选角很困惑。谁能解释一下这句话中到底发生了什么?

x = *(char*)&n;

这是完整的代码,用于判断机器是小端还是大端。

 int n = 0x1234567;
 char x;
 x = *(char*)&n;

最佳答案

&n 获取 n 的地址,但至关重要的是,它是 n 的最低地址字节。 (char *) 告诉编译器将该地址视为指向 char 的指针,即指向单个字节的指针。 * 取消引用,即它获得存储在该地址的字节值。

因此整体效果是x 被设置为存储在n 的最低地址字节中的值。

关于c++ - C/C++ 中的指针和转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9455379/

相关文章:

c++ - 如何测试 map 中包含的类型

android - C++11 定时器函数?

c++ - 谷歌模拟单例 C++ 类

C++虚拟表查找 - 它如何搜索和替换

c - 修改后指针没有改变

c - 关于linux设备驱动中的write函数

c - 获取我正在写的哪个终端专栏

c - 在 C 中查找打包结构大小的可移植方法

将 char 指针转换为 int 指针 - 缓冲区错误 10

c - 如果一个字符串是其他字符串的旋转。所有测试用例未运行