int*指针转换成char*指针,影响是指针的寻址,不知道还影响啥

题目更新。因为:函数调用时,参数以字长(32位机器上就是四个字节)为大小进行压栈,不足四字节的整数会先转化成四字节整数int。由于char是有符号数,所以在转换为int时需要按符号位扩充,这样才能保证负数能正确表示。因此0x88(这是-128 + 8 = -120)会变成0xffffffff88,而0x78(这是+126)会变成0x00000078。在printf内部,它会按照你给它的格式控制符"%08x"来解释你的参数(因为printf是一个变长参数参数,它的声明为printf(const char* format, ...),没有办法得到...中参数的具体类型,只能由格式控制符指定),这样它就被当作了一个十六进制无符号四字节整数来转化为字符串输出了。下面是原答案===============在x86/x64体系中,数字是按little-endian顺序存储的,所以0xf0000078的存储格式为0x78, 0x00, 0x00, 0xf0。*b读出来的就是第一个字符0x88。*b1读出来的就是0x78。
■网友
延伸 @paintsnow 的回答 我给个代码以及以gcc -o 编译执行档的objdump -Dint*指针转换成char*指针,影响是指针的寻址,不知道还影响啥

int*指针转换成char*指针,影响是指针的寻址,不知道还影响啥
【int*指针转换成char*指针,影响是指针的寻址,不知道还影响啥】


    推荐阅读