字符串地址转换为int*类型

#include <stdio.h> int main() { int a, b; char c[10] ={'a', 'b', 'c', 'd'}; int *p; p = (int *)&c; printf("%u %u %d", &p, p, *p); return 0; }
请问*p储存的内容是什么?为什么会是dcba的ascii码呢

*p 指针是指向c字符数组的首地址,也就是指向c数组的第一字符'a',并强制转换成int数值类型,
int类型是4字节, 一个char字符占一字节,输出的时候用%d以数值形式输出,就是输出4个字符的anscii码

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

p是指向c字符数组的,然后这里用到了一个强制转换转换成int类型的,所以最后输出的时候即为它们的anscii码

int指针指向int类型4字节。c是char数组,char是用1字节。所以int *p指向abcd这个内存区域,小端序导致解析整数为dcba的ascii码值。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632