问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言链表成员和地址输出的疑问

发布网友 发布时间:2024-03-19 07:39

我来回答

1个回答

热心网友 时间:2024-06-21 23:49

这个是MSVC编译器处理结构体问题
*head是什么? *head的数据类型是struct MyStruct吧,将结构体以%d格式输出,有点逻辑错误吧。

对于这种将结构体(不是结构体指针)放到参数里面的方式,不同的编译器处理的方法不一样,msvc会把结构体的所有内容(包括类型大小对齐的无意义的字节)都放进去,也就是说,
*head:1 head->num:-858992567 (*p).num:3734056显示的都是 *head的内容,后面传的head->num, (*p).num 并未使用

你可以尝试添加如下两行测试代码:
printf("*head: head->num:%d head->na:%c thead->next:%d\n", *head);
printf("head->: head->num:%d head->na:%c thead->next:%d\n", head->num, head->na, head->next);

然而,在GCC类编译器上,会把*head看成一个整体,你的代码在GCC编译器可以输出正常结果,而上面的测试代码则不能正常通过编译。

需要注意的是,printf只是从*head中取固定的字节数(32位程序一般是4字节),为保证避免歧义,不要使用*head方式输出结构体,因为这本来从逻辑上就是有问题的。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
在线条形码生成 ie地址栏是什么 ie浏览器的官网地址是什么? 团餐定制电话 抖音电商与广东商务厅启动“富域计划” 简单的晚餐晒美食文案句子 简单的晚餐晒美食说说短句 鸭肉炒什么好吃家常做法 为什么越背越记不住 绯牡丹锦多久浇水 绯牡丹养护要点 在云南,什么创业项目适合自由职业者,有个前提是投入少的? ...经营许可证办理需要满足什么条件?游戏类能不能办理? 大四可以出国读研究生吗? 北京朝阳站地铁开通日期 大四去国外读研究生影响拿学位证吗 珠海市怎么样免交电梯年审费 河北省公务员考试网上报名为什么报不了 电梯十年免检由维保公司申报还是物业公司 rx300油箱多少升 实名认证的泄露后有什么危害? 有朋自远方来不亦乐乎的意思的乐 九奏乐的解释 大风雪投宿赤城卢氏楼是什么时候的诗 路亚用什么饵打白条 形容坦白意思的歇后语 600mw比较适合哪种无人机呢? 民进主委和镇委书记的区别 陈韩烯妈妈几岁了 陈韩烯是明星吗 陈韩烯是学霸还是学渣 C语言双链表问题 C语言关于双链表的一个问题:下面是代码: 有朋友吃过康柏丝牌31种维生素片的吗?这个适合男人吃吗,你买的时候花... 店口镇烟花贵不贵 2024年2月8日紫微斗数详解 女命女生 土建资料的难度在那里 求函数y=log以二为底的x的绝对值的定义域,并画出它的图像,指出他的单调... 中职教师可以评助工,工程师这类技术职称吗?(我知道可以评教师系列职称... 师范类本科毕业生可以评定工程师职称吗?有人说只能评定教师职称,是这 ... 请问电信的宽带帐号跟光猫绑定了么?~我想换一个光猫,家里的光猫不好... 《长江上的警察张竞》 幼儿园作业展有什么好听的名字 房子装修欧式风格设计技巧装修欧式风格设计要点 欧式风格设计理念欧式风格装修技巧 lpl的激活因子 汕头市出国体检在哪里 流量按天折算是不是不划算 孕妇吃完dha可以立即吃石榴吗 洛阳德研机械设备有限公司怎么样? DHA什么时候吃好吃DHA哪个时候吃好吃