【发布时间】:2017-01-01 07:27:32
【问题描述】:
我有中度卡住,谷歌搜索正确的词不能让我得到正确的答案。更糟糕的是,我已经这样做了,但是我自己的代码示例在源代码的某个地方丢失了。
#include <stdio.h>
int main()
{
short x = 0xABCD;
char y[2] = { 0xAB, 0xCD };
printf("%x %x\n", y[0], y[1]);
printf("%x %x\n", (char *)&x[0], (char *)&x[1]);
}
基本上我需要通过指针算法通过数组访问各个变量字节,无需任何计算,只需通过类型转换。
【问题讨论】:
-
你需要
((char *)&x)[0]等 -
您可能还需要记住,您正在使用十六进制表示负数(您的编译器应该抱怨类型溢出)给定类型
short和char(而不是 @987654325 @ 和unsigned char) 以防引起您的困惑。 -
代码调用未定义的行为。
printf期望unsigned int,你传递int。
标签: c arrays pointers pointer-arithmetic