本帖最后由 mxwawaawxm 于 2022-10-12 09:31 编辑
[C] 纯文本查看 复制代码 /*
打印不同程序对象的字节表示
小端法、大端法
强制类型转换
指针
*/
#include <stdio.h>
#include <string.h>
void show_bytes(unsigned char * start, size_t len);
int main(int argc, const char *argv[])
{
int ival = 12345;
int *pival = &ival;
printf("&pival = %p\n", &pival);
show_bytes((unsigned char *)&pival, sizeof(void *));
return 0;
}
void show_bytes(unsigned char * start, size_t len)
{
size_t i;
for (i=0;i<len;i++) {
// 用至少两个数字的十六进制格式输出
printf("%.2x ", *(start+i));
}
printf("\n");
}
如上面代码所示,主要功能是为了依字节打印对象。
这是从《深入理解计算机系统》看到的代码。我改动了一点。
最后输出结果是
[Asm] 纯文本查看 复制代码 &pival = 000000000024FE40
4c fe 24 00 00 00 00 00
这应该是采用小端法。但为什么,指针最后是40,而打印出来是4c
请问,哪里出错了。
|