中易网

如何用函数初始化结构体

答案:3  悬赏:40  
解决时间 2021-02-28 11:34
#include
struct student
{
int num;
char name[10];
int score[3];
}stu[5];//我已经定义好结构体,但是我想调用函数InputStuInfo函数初始化学生信息,我应该怎么做,怎么定义函数,再怎么在main函数里面提取函数呢?
最佳答案
一、若类和结构体所有数据成员均为public型,可采取如下带花括号形式进行初始化。
注意:
① 不论值的个数多少,都必须使用花括号定界
② 未指定值的数据成员编译器会自动初始化为默认值
③ 这种初始化对象方式,要求所有数据成员必须为public型
④ 这种初始化对象方式,要求类中不能编写任何构造函数
struct S { //class S 效果一样
int x;
unsigned short y;
};
S testS1={100,123};
S testS2={200};//未指定值的数据成员初始化为默认值,这里os2.y=0;
S TestS[4]={ {100,10},
{200,20},
{300} };//未指定值的初始化为默认值,os[2].y,os[3].x,os[3].y。
《windows核心编程》中我们会遇到:STARTUPINFO si = { sizeof(si) } ,就是对si结构体的初始化。
二、若数据成员有private或protected型,或是提供了构造函数,必须使用构造函数来进行初始化。
struct S { //class S可自行试验,结果相同
private:
int x;
public:
double y;
S(void){}
S(int idemo,double ddemo) {x=idemo;y=ddemo;}
void show(void) {cout< };
S os1;//将调用默认构造函数(无参构造函数)
S os2(1000,2.345);
S os3=S(2000,4.567);
S os[4]={S(10,1.234),S(20,2.234)};//未初始化的将调用默认构造函数。如此时没有默认构造函数会出错。
重要提示:
①在S os3=S(2000,4.567);语句中,因是声明并初始化os3对象,所以将调用S(int,double)构造函数对os3进行初始化。
②S os3(2000,4.567); 等价于 S os3=S(2000,4.567);
③但如果os3已经存在了,S os3(100,1.234);os3=S(2000,4.567),则表示用一个临时对象赋值给os3,将调用operator=,然后系统再释放这个临时产生的对象。系统默认的=运算是将源对象的数据成员的值复制到目标对象中的数据成员中。
全部回答
在struct student里面加一句student(){} 花括号里面填初始化的内容
假设有一个如下的struct定义: struct astruct { int a; int b; }; struct astruct test={0}; 即使astruct中都是基础类型的成员这样的初始化话也是不正确的。 这种初始化仅仅是把a变量设置为了0,而未对b变量做初始化。 产生这样错误的原因,大概是收到数组初始化的影响。数组是可以这么初始化话的,而且初始化的值只能是0!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
普陀8月14号天气预报
我的电脑是64位操作系统,换了32位以后为什么
低压负何大,为什么高压开关跳闸
为什么红米还是搞饥饿营销呢?
盖亚奥特曼和阿古茹奥特曼哪集打过架?
求高手解释什么是需求说明书中文档约定
快乐大本营 winner 哪一期
胜积村村怎么去啊,有知道地址的么
求花の女子アナ ニュースキャスター·悦子 全
为什么从爱奇艺软件上下投屏助手总是失败呢
切磋切磋,呵呵~~~~~~~~~
萨瑟兰文凭要求,什么文凭可以去上班
薇薇新娘婚纱摄影馆地址在什么地方,想过去办
如何简单的区分开”铅”和”锡”
车载充电器针对手机型号吗?
推荐资讯
怎么能尽快听懂外教讲课
伤城之恋霍建华和秦岚有吻戏吗?
保定坐20路去西苑惠友哪一站下车
女 18岁 从13岁第一次来姨妈到现在一直都不规
河池市计生协地址在哪,我要去那里办事
年龄不是爱情的阻碍,的优美诗句
恐怖黎明复仇boss是什么意思?
龙文区漳州农商银行24小时自助银行(西坑支行)
问道手游隐藏称号怎么得
16g电脑内存条插上电脑上相当于多少内存啊?
盛大金禧双牌分公司我想知道这个在什么地方
贵阳哪家美发学校最好
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?