c++ primer plus复合类型之结构简介

    xiaoxiao2021-04-14  38

    数组可以存储多个元素,但是所有的元素类型必须相同。结构是一种比数组灵活的数据格式,因为同一个结构可以存储多种类型的数据。结构是用户自定义的类型,而结构声明定义了这种类型的数据属性。定义了数据类型之后,便可以创建这种类型的变量了。创建结构包括两步:首先,定义结构描述——它描述并标记了能够存储在结构中的各种数据类型,然后,按照描述创建结构变量。

    1:创建结构体类型

    例如:

    struct inflatable { char name[20]; float volume; double price; };关键字struct声明这是一个结构。标识符inflatable是这种数据格式的名称,因此新类型的名称为inflatable。这样,便可以像创建int或float变量那样 创建inflatable类型的变量了。接下来,大括号中包括了结构存储的数据类型的列表。列表中的每一项都被称为结构成员。因此,inflatable 结构中有三个成员。总之,结构定义指出了新类型(即inflatable)的特征 

    2:创建结构体变量以及访问结构体成员

    c++允许在声明结构变量时省略关键字struct ,与基本类型名用法相同,例如

    inflatable hat; inflatable vincent; 由于hat类型为inflatable,因此可以使用成员运算符(.)来访问各个成员,例如,hat.price指的是price成员。 3:结构声明的位置很重要 ,可以将声明放在main()函数中,另一种选择是将声明放在main()的前面。

    4:结构的初始化

    c++支持将列表初始化用于结构,且等号是可选的,比如

    inflatable goose {"Daphne",0.12,29.99};其次,如果大括号内未包含任何东西,各个成员将被设置为零。

    5:结构可以将string类作为成员

    只要使用的编译器支持对以string对象作为成员的结构进行初始化,结构中就可以包含string对象,比如

    struct inflatable { string name; float volume; double price; }; 6:结构的其他属性——结构赋值

    #include <iostream> #include <string>//使得string类有效 using namespace std; struct inflatable { string name; float volume; double price; }; int main() { inflatable goose = { "Daphne",0.12,29.99 }; inflatable choice; cout<<"goose:"<<goose.name<<" for $"; cout<<goose.price<<endl; choice=goose; cout<<"choice:"<<choice.name<<" for $"; cout<<choice.price<<endl; return 0; }

    输出结果:goose:Daphne for $29.99

    choice:Daphne for $29.99

    7:结构数组

    如前所述,inflatable结构中可以包含数组元素,进一步我们可以创建元素为结构的数组。方法和创建基本类型数组一样。例如,创建一个含100个ingflatable结构的数组,可以这样做:

    inflatable gifts[100];

    这样,gifts就是一个inflatable数组,每个元素(如gifts[1]或gifts[99])都是inflatable对象,可以与成员运算符一起使用

    gifts本身是一个数组,而不是结构,因此gifts.price的表述是无用的。 初始化结构数组:可以结合使用初始化数组的规则(逗号分隔每个元素值,并将这些值用花括号括起来)和初始化结构(逗号分隔每个元素值,并将这些值用花括号括起来)的规则。例如,

    inflatable gifts[2]= { {"Mary",1.2,3.54}, {"Tom",3.2,5.6} };

    转载请注明原文地址: https://ju.6miu.com/read-669810.html

    最新回复(0)