结构

同一个结构可存储多种类型的数据。

struct inflatable  //关键字struct表明这些代码定义 的是一个结构的布局。标识符inflatable是这种数据格式的名称,有3个成员
{                              //列表中的每一项都被称为结构成员
    char name [20];   //每个列表都是一个声明语句   存储字符串的char数组
    float volum;
    double price;
}

结构定义指出了新类型的(inflatable)的特征
定义结构后,可以创建这种类型的变量
inflatable hat;
inflatable mainframe;
hat的类型是inflatable,因此可以使用成员运算符(.)来访问各个成员,由于price成员被声明为double类型,hat.price相当于是double类型的变量。
结构声明的位置很重要,有两种选择,可以将声明放在main()函数中,紧跟在开始括号的后面,或者将声明放到main()函数的前面。位于函数外面的声明被称为外部声明,可被其后面的任何函数使用。内部声明只能被该声明所属的函数使用。

C++11结构初始化

1、与数组一样,C++11也支持将列表初始化用于结构,且“=”是可选的

inflatable duck {"Daphne", 0.12, 9.98};
duck.name是一个字符数组,可以用下标来访问其中的字符,如

duck.name[0]是字符D,但是duck[0]没有意义,因为duck是一个结构,不是数组。
2、若大括号内未包含任何东西,各个成员都将被设置为0。
inflatable mayor {};
3、最后,不允许缩窄转换
可以将string类作为成员,将成员name指定为string对象而不是字符数组。前提是要让结构定义能够访问名称空间std,为此,可以将编译指令using移到结构定义之前,也可以将name声明为std::string。

其他结构属性

可以将结构作为参数传递给函数
可以让函数返回一个结构
可以使用赋值运算符“=”将结构赋给另一个同类型的结构,这样结构中每个成员都将被设置为另一个结构中相应成员的值,即使成员是数组。这种赋值被称为成员赋值。

结构数组

inflatable结构包含一个数组,也可以创建元素为结构的数组。

inflatable gifts[100];

gifts是一个inflatable数组,其中每个元素gifts[0]等都是inflatable对象。gifts本身是数组,而不是结构。数组中每个元素都是结构

inflatable guests [2]=
{ 
{"Bambi", 0.5, 21.99},
{"Godzilla", 2000, 565.99},
};

guests是一个inflatable数组,因此guests[0]的类型为inflatable,可以使用它和句点运算符来访问相应inflatable结构成员。

  • 共用体
    共用体union是一种数据结构,它能够存储不同的数据类型,但只能同时存储其中一种类型。结构可以同时存储int,long,double,共用体只能存储int,long或double。
union one4all
{
     int int_val;
     long long_val;
     double double_val;
};
可以用one4all变量存储int,long或double,条件是再不同时间进行
one4all pail;
pail.int_val=15;    //store an int
cout << pail.int_val;
pail.double_val = 1.38;   // store a double, int value is lost
cout << pail.double_val;

pail有时是int,有时又可以是double,由于共用体每次只能存储一个值,共用体的长度为其最大成员的长度。
共用体常用于节省内存,常用于操作系统数据结构或硬件数据结构。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值