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 -D

【int*指针转换成char*指针,影响是指针的寻址,不知道还影响啥】
推荐阅读
- 汽车很听话|换成了8AT没有OTA的领克01,能够成为爆款吗?
- C语言 指针引用数组的地址问题
- |@扬州房贷族 利率被动转换成LPR定价,年底前有一次机会
- 在dribble和Pinterest等设计师网站上有哪些不得不关注的设计大神
- Numpy中的『using a non-integer number…』警告该怎样处理
- strawberryperl,执行print命令时,显示“无法初始化设备PRN\"是咋回事呢
- 花瓣网和 Pinterest 在使用上有啥不同,Pinterest 采集工具咋添加到浏览器上
- 怎样把prezi转换成视频,并配上录音解说
- 将雪女五星转换成山童五星值吗
- 怎样看待起点中文网把个人中心全换成php了
