本来上一篇就应该写完的,奈何我的密集恐惧症实在太严重了,大段大段的看得我都想睡觉了。所以,我把复合数据类型分出来了,这样看起来心情舒畅,吃嘛嘛香。
这次,我要说的是复合类型之结构。
复合类型的结构体就能体现出C和C++的巨大差异了,我总认为这是C++向OPP迈进一步的新纪元。
目录
1、结构的声明和初始化
struct 结构类型名称
{
结构成员;
结构成员;
};
例如,struct inflatable
{
char name[20];
float volume;
double price;
};
变量声明有2种方式:①C风格 ②C++风格
C风格: struct infatable goose;
C++风格: infatable goose;
初始化可以在结构变量声明的时候初始化,也可以声明之后;例如,
infatable guest = {
"Glorious Gloria",
1.88,
29.99
}; //注意,这里用的逗号隔开。同时,结构变量的数组成员不能拿出来单独赋值。但是可以通过使用strcpy函数,或者定义为string类型赋值。初始时,不能缩窄转换。
(对象来了!)C++的结构和类有完全一样的性质。细微的差异是结构默认是pulic属性修饰,而类是private修饰。参考文章[1]细说了他对C++结构和类的区别理解。
结构也可以有自己的构造函数、也可以有自己成员函数,还可以运算符重载...
2、结构的属性
结构变量是可以赋值给另一个相同类型的结构的。但是数组就不可以!
共用体:可以存储不同的数据类型,但是同时存储其中的一种类型。
枚举:用法和结构类似。用于创建符号常量。
声明枚举类型: enum 枚举类型
{
枚举成员,
枚举成员, //注意和结构的差异,这里用的逗号
枚举成员
};
例如,enum spectrum{ red,orange,yellow};
其中,red和orange,yellow作为符号常量,他们对应的整数值从0开始。
枚举量可以转换为整型,但是整型必须强制转换为枚举类型。
参考文章: