VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 4105|回复: 3

41课作业问题,为什么不能输出正确结果?

[复制链接]
80_avatar_middle
最佳答案
0 
online_vip 发表于 2018-6-21 06:30:46 | 显示全部楼层 |阅读模式
Syc老师您好:
for (int idx = 0; idx < n_size; ++idx)
        {
                total_age += p_arr_stud[idx].age;
        }
这个for循环中,第一次循环数值是正确的,从第二次开始, p_arr_stud[idx].age的值就成这样的了:                p_arr_stud[idx].age        -858993460        int
我想不明白。




上一篇:请大神指点
下一篇:如何防止头文件重复包含呢?
51_avatar_middle
最佳答案
83 
online_admins 发表于 2018-6-21 13:41:24 | 显示全部楼层
为什么呢?因为基类的对象大小和派生类的对象大小不一致,所以在进行 ++idx 操作了之后 p_arr_stud[1] 所指向的第二个元素的地址就不正确了,所以里面的 age 等相关成员的值也就都不正确了
80_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2018-6-21 19:42:42 来自手机 | 显示全部楼层
就像char arr[10]和int arr[10]一样,每个元素占用的空间大小不一样,所以指向下一个元素的指针地址也不一样,就会得到不一样的结果
29_avatar_middle
最佳答案
0 
在线会员 发表于 2020-8-14 12:04:21 | 显示全部楼层
豁然开朗。明白了。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-11-29 04:22

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表