永发信息网

C语言二级指针问题: int x=0x100100; char *p=(char *)&x; *p

答案:2  悬赏:30  手机版
解决时间 2021-01-24 17:11
C语言二级指针问题: int x=0x100100; char *p=(char *)&x; *p='A';//等价0x41 p=p+2; *p=50;//等价0x32 printf("%x\n",x); 结果是320141,怎么解释?
最佳答案
x的初值是0x100100也就是一个16进制数,指针p指向A的首地址,根据16进制数,此时p指向的是开头的0x10,然后通过指针赋值,此时的x是0x410100。同理指针移位2位,指向末端的0x00。赋值过后,x == 0x410132,把x拆分成3个字节,0x41 0x01 0x32。 由于我们目前用的计算机大部分是小端对齐。高低位存储的机制(具体一时间我忘记怎么解释,可以自己百度大小端对齐看看),所以实际在内存中是这样的0x320141(也就是按字节反过来),用%x输出16进制数,所得为问题所示结果。
全部回答
int x=0x100100; // 声明int型变量x, 对于32位机来言,这个x变量占了4个字节(32bit) char *p=(char*)&x;//p指针指向x的地址,注意p是char型的(占1个字节,8bit),也就是说p实际是指向x的低8位"0x00 " *p='a' //将x低8位"0x00 "改成"0x41", 因为a的ascii码是0x41 p=p+2;// p的指针移动2个字节(即指向x的第三个字节 0x10,) *p=50;// 将x高8位"0x10 "改成"0x32" printf("%x\n",x);// 打印x值 望采纳!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
三国时期的三足青铜小鼎能买多少钱
一齐一汽车轮胎经营部怎么去啊,我要去那办事
计算机中的随机数是怎样产生的?
欢乐精灵遗迹之塔vip10需要多少钱
妈妈死五年了昨晚梦见死时没装棺材只用被裹着
盗墓笔记里面,小哥进去青铜门里面看到了什么
买一套三室一厅的新房要多少钱?
中型火电汽轮发电机组功率为()万千瓦。A.5~1
又甜又辣韩剧百度网盘
在双代号时标网络计划中,关键线路是指
优青申报,共同通讯作者算数吗
梁园区商丘李家老字号地址有谁知道?有点事想
我国常见的咯血原因A.肺结核B.肺吸虫C.肺梗死
二手车市场3.6的花冠车开一年卖掉值多少钱
卖家虚假发货不退款钱可能退不回来吗
推荐资讯
瑜伽可以天天练吗
耽美小说就是一本快穿文,有一个世界是在霸王
发现一个为题!自看古代片古装片里面都是给自
下图甲是高等动物细胞亚显微结构示意图,图乙
ps4可以一边载东西一边玩吗?
男生不喜欢房间有灯光是什么原因 心理咨询
下列工业与民用建筑某些建筑技术经济指标的计
牌楼村村民委员会地址有知道的么?有点事想过
星辉教育辅导中心地址有知道的么?有点事想过
已知如图,△ABC、△A′B′C′均为钝角三角形,
玩一会鼠标就失灵了,然后必须得打开下任务管
有人知道现在涿州宏远宜居园盖什么样了吗?有
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?