浅谈C++结构体初始化

本文博客链接

结构体

在实际问题中,一组数据可能具有不同的数据类型。假设要存储班上同学的信息,我们需要存储他(她)的姓名、性别、学号。我们希望有一种数据格式将所有信息存储到一个单元中。数组不能完成这项任务。而C++中的结构体可以满足要求。

struct information
{
    string name;
    string gender;
    int number;
};

结构体声明不会创建任何结构体的实例。本示例中的结构体声明只是告诉编译器information结构体看起来的样子。它本质上是创建一个名为information的新数据类型。结构体是用户定义的类型,而结构体声明定义了这种类型的数据属性。

在定义结构体时,系统对其不分配实际内存。只有定义结构体变量时,系统才为其分配内存。


结构体初始化

初始化结构体变量成员的最简单的方法是使用初始化列表。初始化列表是用于初始化一组内存位置的值列表。列表中的项目用逗号分隔并用大括号括起来。

information student = {"shangguan","女",10000};

也可以仅初始化结构体变量的部分成员。例如,如果仅知道他(她)的名字和性别,但不知道学号,则可以按以下方式定义和初始化变量:

information student = {"shangguan","女"};

这里只有 name 和 gender 成员被初始化,number 成员未初始化。但是,如果某个结构成员未被初始化,则所有跟在它后面的成员都需要保留为未初始化。使用初始化列表时,C++不提供跳过成员的方法。以下语句试图跳过 gender 成员的初始化。这是不合法的。

information student = {"shangguan",10000};//非法

还有一点很重要,在C++11之前不能在结构体声明中初始化结构体成员,因为结构体声明只是创建一个新的数据类型,还不存在这种类型的变量。例如,以下声明是非法的:

struct information
{
    string name;
    string gender;
    int number = 10000;
};

C++11

但是,从C++11之后,编译器就支持在结构体的定义时进行成员初始化。

与数组一样,C++11也支持将列表初始化用于结构,且等号(=)是可选的。

information student {"shangguan","女",10000};

其次,如果大括号内未包含任何东西,各个成员都将被设置为零。


备注:本人不能保证该文章和该文章中的代码无错误、无缺陷,请自行判断后使用。如遇到问题请联系本人。转载请标明出处。

参考文章:

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值