注册 登录
编程论坛 C++教室

我是初学者,请问这个结构体哪里出问题了

海绵宝宝lyy 发布于 2020-10-26 14:28, 2550 次点击
#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();
}
3 回复
#2
纯蓝之刃2020-10-26 15:36
你的结构体没有问题,不过你在主函数定义的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;
}
#3
海绵宝宝lyy2020-10-26 16:02
回复 2楼 纯蓝之刃
特别感谢
#4
satan2252021-07-19 20:51
你是不是结构体没有结构体数组
1