VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 771|回复: 5

[已解决]结构体数组的指针

[复制链接]
70_avatar_middle
最佳答案
0 
在线会员 发表于 2021-9-4 09:03:03 | 显示全部楼层 |阅读模式
#include<iostream>
#include<string>
using namespace std;


struct Student
{
        string name;
        int xh, cj;
};

int main()
{
        Student group[5];
        Student* pgroup = group;//-----------------1
        cout << pgroup << endl;
        pgroup = group;//-----------------------------2
        cout << pgroup<<endl;
        cout << "请依次输入学生的’姓名‘,’学号’,‘成绩’"<<endl;
        //获取信息
        for (int i = 0; i < 5; i++,pgroup++)
        {
                cin >> pgroup->name >> pgroup->xh >> pgroup->cj;
                if (i == 4)
                {
                        pgroup = group;//-----------------------------------3
                }
        }
        cout << pgroup<<endl;
        cout << &group[1]<<endl;//----------------------------------------4

        return 0;
}


这段代码我输出后发现的1,2的结构体地址是一样的,3,4的地址是一样的,但不应该1,2,3的地址都是一样的么,然后4和1,2,3都不一样
就解答
最佳答案
37_avatar_small
2021-9-4 21:09:41
最后的结果不一样的原因是:
你内嵌的if(i == 4){
        pgroup = group;
}
判断结束后,

外部的 for(int i = 0;i < 5; i++,pgroup++)


i=4 判断结束, 此时进行最后判断
因为i=4,所以 i<5成立 ,

i++,pgroup++ 继续执行
i = 5, pgroup = pgroup+4(也就是变成你所说的那个 第二个结构体数组group[1]的地址了 )




上一篇:远程卸载DLL 导致目标程序崩溃问题。
下一篇:36课作业请求帮助
00_avatar_middle
最佳答案
10 
在线会员 发表于 2021-9-4 09:23:33 | 显示全部楼层
我运行是一样的啊
QQ截图20210904092216.png
70_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-9-4 11:03:57 | 显示全部楼层
tk3184020 发表于 2021-9-4 09:23
我运行是一样的啊

对啊,但不应该是1,2,3都是group【0】的地址,4是group【1】的地址,
37_avatar_middle
最佳答案
1 
在线会员 发表于 2021-9-4 21:09:41 | 显示全部楼层    本楼为最佳答案   
bestAnswer
最后的结果不一样的原因是:
你内嵌的if(i == 4){
        pgroup = group;
}
判断结束后,

外部的 for(int i = 0;i < 5; i++,pgroup++)


i=4 判断结束, 此时进行最后判断
因为i=4,所以 i<5成立 ,

i++,pgroup++ 继续执行
i = 5, pgroup = pgroup+4(也就是变成你所说的那个 第二个结构体数组group[1]的地址了 )
解答.png
37_avatar_middle
最佳答案
1 
在线会员 发表于 2021-9-4 21:37:52 | 显示全部楼层
有个地方说错了 ,不是 group+4  ,应该是 group的地址 加上 sizeof(Student)的大小
70_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-9-5 09:30:24 | 显示全部楼层
猫咪没有鱼 发表于 2021-9-4 21:09
最后的结果不一样的原因是:
你内嵌的if(i == 4){
        pgroup = group;

听懂了,谢谢好兄弟结构体数组的指针
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

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

关闭

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

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

GMT+8, 2023-3-23 07:47

Powered by CcTry.CoM

© 2009-2021 cctry.com

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