rye*_*ger 6 c c++ arrays pointers
我创建了一些简单的代码来测试将char数组转换为int指针.这正如我预期的那样工作正常,但是当我使用指针写入数组时,当我打印出c数组时,数据交换了MSB < - > LSB.为什么会这样?这是操作系统依赖的吗?
#include "stdio.h"
const int SIZE = 12;
int _tmain(int argc, _TCHAR * argv[]) {
unsigned char c[SIZE] = {
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
};
unsigned int * ptr = (unsigned int * ) c;
int i;
printf("Int size=%d\n", sizeof(unsigned long));
for (i = 0; i < sizeof(c); i++) {
printf("%X, ", c[i]);
}
printf("\n\n");
for (i = 0; i < sizeof(c) / sizeof(unsigned long); i++) { * ptr++ = i;
}
for (i = 0; i < sizeof(c); i++) {
printf("%X, ", c[i]);
}
printf("\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
Int size=4
1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C,
0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0,
Run Code Online (Sandbox Code Playgroud)