VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 293|回复: 2

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

[复制链接]
80_avatar_middle
online_vip lanyihr888 发表于 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
我想不明白。




上一篇:《实用C++》第48课 C++容器之链表list①
下一篇:《实用C++》第49课 C++容器之链表list②

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

51_avatar_middle
online_admins Syc 发表于 2018-6-21 13:41:24 | 显示全部楼层
为什么呢?因为基类的对象大小和派生类的对象大小不一致,所以在进行 ++idx 操作了之后 p_arr_stud[1] 所指向的第二个元素的地址就不正确了,所以里面的 age 等相关成员的值也就都不正确了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

80_avatar_middle
ico_lz  楼主| lanyihr888 发表于 2018-6-21 19:42:42 来自手机 | 显示全部楼层
就像char arr[10]和int arr[10]一样,每个元素占用的空间大小不一样,所以指向下一个元素的指针地址也不一样,就会得到不一样的结果

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

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

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

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

GMT+8, 2018-7-17 05:59

Powered by Discuz! X3.4

© 2009-2018 cctry.com

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