标题:我是初学者,请问这个结构体哪里出问题了
只看楼主
海绵宝宝lyy
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-10-25
结帖率:33.33%
已结贴  问题点数:20 回复次数:3 
我是初学者,请问这个结构体哪里出问题了
#include<iostream>
using namespace std;
#include<string>
struct hero
{
    string name;
    string sex;
    int  age;
};

void putt()
{
    for(int i=0;i<5;i++)
    {
        cout<<"姓名:"<<unit[i].name
            <<"年龄:"<<unit[i].age
            <<"性别:"<<unit[i].sex<<endl;
    }
}


void main()
{
    struct hero unit[5]=
    {
        {"刘备","男",45},
        {"关于","男",28},
        {"张飞","男",45},
        {"赵云","男",49},
        {"貂蝉","女",18},
    };

    putt();
}
搜索更多相关主题的帖子: string 结构体 void struct age 
2020-10-26 14:28
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:554
专家分:3690
注 册:2019-7-29
得分:20 
你的结构体没有问题,不过你在主函数定义的struct hero unit[5]是局部变量,在void putt()函数中不能使用。可以通过传递函数将unit传递到putt()中使用。
在putt()函数中不要使用5这个定义死的值,而应该对unit进行长度判断,避免非法溢出访问。
main应该是int类型的返回值。
程序代码:
#include<iostream>
using namespace std;
#include<string>
struct hero
{
    string name;
    string sex;
    int  age;
};

void putt(struct hero *unit,int len)
{
    for (int i = 0; i < len; i++)
    {
        cout << "姓名:" << unit[i].name
            << "年龄:" << unit[i].age
            << "性别:" << unit[i].sex << endl;
    }
}


int main()
{
    struct hero unit[5] =
    {
        {"刘备","",45},
        {"关于","",28},
        {"张飞","",45},
        {"赵云","",49},
        {"貂蝉","",18},
    };

    putt(unit,sizeof(unit)/sizeof(struct hero));

    return 0;
}

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2020-10-26 15:36
海绵宝宝lyy
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-10-25
得分:0 
回复 2楼 纯蓝之刃
特别感谢
2020-10-26 16:02
satan225
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2021-7-19
得分:0 
你是不是结构体没有结构体数组
2021-07-19 20:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-503635-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.387337 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved