研一寒假01_结构体_union共用体_enum枚举

#--------------------------------结构体---------------------------------------#

/* 定义结构体并初始化方法一 */
#include <iostream>

//外部结构声明,在所有的函数中都可以使用
struct inflatable //定义新类型inflatable(类型int char 等基本数据类型)
{
std::string name; //将name的类型声明为std::string

char name[20]; //结构中的成员
float volume;
double price;
string str1="haijing"; //临时加的表示在结构中也可以定义string类型的变量,但是一定要让结构定义能够访问名称空间std
}; //分号勿忘!!

int main()
{
using namespace std;

inflatable guest = //用inflatable去定义结构变量guest并初始化改结构变量
{
"Glorious Gloria", //name value 以逗号分隔!!
1.88, //volume value 以逗号分隔!!
29.99 //price value 最后无逗号
}; //分号勿忘!!

inflatable pal = //用inflatable去定义结构变量pal并初始化改结构变量
{
"Audacious Arthur", //name value 以逗号分隔!!
3.12, //volume value 以逗号分隔!!
32.99 //price value 最后无逗号
}; //分号勿忘!!

/*可以用赋值预算符(=)将结构赋值给另一个同类型的结构 */
inflatable choice; //定义空的inflatable类型的结构变量choice
choice = guest; //直接将已经初始化了的guest数据复制给choice
cout<<choice.name<<choice.volume<<choice.price; //结构变量的取值方法*****
}

 

/* 定义结构体并初始化方法二 */
#include <iostream>

int main()
{
struct perks
{
int key_number;
char ch[20];
}mr_smith,ms_jones; //注意分号!! perks为新的结构类型, mr_smith和ms_jones为结构变量
}

 

/* 定义结构体数组初始化 */

#include <iostram>

struct inflatable //定义新类型inflatable(类型int char 等基本数据类型)
{
char name[20]; //结构中的成员
float volume;
double price;
}; //分号勿忘!!

int main()
{
inflatable gifts[100]; //创建包含100个inflatable结构的空数组
inflatable guest[2] = //创建包含2个inflatable结构的数组并初始化
{
{"Bambi",0.5,21.99},
{"Godzilla",200,565.99}
}; //勿忘分号!!

/* 结构体数组的输入输出方法 */
cin>>gifts[0].vilume<<endl; //给gifts[0]中的volume赋值
cout<<guest[1].price<<endl; //输出guest[1]的price值 guest[1].price=565.99
}

 #------------------------------------union共用体----------------------------------------#

//结构体和共用体的区别:结构体中的结构变量在初始化的时候,必须给结构中的所有成员赋值;而共用体则可以不用,一次只能给一个成员赋值

#include <iostream>

union one4call //定义共用体类型one4call
{
int int_val;
long long_val;
double double_val;
};

int main()
{
one4call pail; //定义onecall类型的变量pail

pail.int_val=15;//共用体只能一个一个的给成员赋值,不能一次全部赋值
cout<<pail.int_val;//输出

pail.long_val=1.38; //共用体只能一个一个的给成员赋值,不能一次全部赋值
cout<<pail.long_val; //输出
}

/* 共用体的长度为其最大成员的长度,其用途之一就是当数据项使用两种或者更多种格式(但不会同时使用),可节省空间 */
/* 例如一些商品的id为数字,一些商品的id为字符串,这时就可以用共用体来存储 */
#include <iostream>

struct widget
{
char brand[20];
int type;
union id //定义共用体类型id 在id中有两个成员变量id_num和id_char,只能存储一个,不可同时存储
{
long id_num; //数字类型的商品id
char id_char[100]; //字符串类型的商品id
} id_val; //定义共用体变量id_val
}; //分号勿忘!!

int main()
{
widget prize; //定义结构体变量prize

cout<<"\"1\"表示id为数字类型商品,\"2\"表示id为字符串类型商品"<<endl; //输出"1"表示id为数字类型商品,"2"表示id为字符串类型商品
cout<<"请输入:"<<endl;
cin>>prize.type; //输入商品类型给prize.type

if(prize.typr==1)
cout<<"请输入数字编号的商品id"<<endl;
cin>>prize.id_val.id_num;
else
cout<<"请输入字符串编号的商品id"<<endl;
cin>>prize.id_val.id_num;
}

//匿名共用体就是将上面的所有id_val给省略掉,包括引用的时候,即prize.id_val.id_num直接写成prize.id_num即可

 #----------------------------enum枚举--------------------------------------#

#include <iostream>

int main()
{
enum spectrum {red,orange,yellow,green,blue,violet,indigo,ultraviolet}
spectrum band; //使用新类型spectrum创建枚举变量band
//将spectrum称为枚举,将red,orange,yellow,green,blue,violet,indigo,ultraviolet称为枚举量,其中red=0,orange=1,yellow=2,green=3以此类推

/* 只能使用枚举量给枚举变量赋值,用其余的值给枚举变量赋值时不对的 */
band=red; //有效
band=2000; //无效
band=red+green; //无效,因为没有为枚举定义算数运算
band=spectrum(20); //有效,20不是枚举值,但20在取值范围之内,取值范围的上下限见c++97页

/* 可以人为的设置枚举量的值 */
enum spec{first,second=100,third}; //first默认为0,second=100,后面没有被初始化的值将会比前面的枚举量大1,即third=101
}

//实际上,枚举常用来定义相关的符号常量,而不是创建新类型,可以用来替代const

 

2019.02.15 最后编辑于16:15  haijing in hz miss my family

 

 

 

 

 

 

 

 

posted @ 2019-03-01 20:09  兵临城下的匹夫  阅读(243)  评论(0编辑  收藏  举报
TOP