c++ primer 2
1. p88
结构简介:
先定义结构描述
struct inflatable { char name[20]; float volume; double price; }
再按描述创建结构变量
struct inflatable gooes;// in c
inflatable vincent;//int c++ 可省略 struct
inflatable guest = { "Glorious Gloria", 1.88, 29.99 };// init indicated values
C++不提倡使用外部变量,但提倡使用外部结构申明。
根据C++11新特性,与数组一样,支持将列表初始化用于结构,且等号(=)是可选的。
inflatable duck{"Daphne",0.12,9,98}
若{}内为空,则被设置为0; 最后,不允许缩窄转换。
也可以同时完成定义结构和创建结构变量的工作
struck perks { int key_number; char car[12]; }mr_smith,ms_jones;
甚至可以初始化以这种方式的变量
struck perks { int key_number; char car[12]; }mr_glitz = { 7, "Packard" };
还可以 声明没有名陈的结构类型
struct { int x; int y; } position;
2.p94
共同体(union)是一种数据格式,它能够存储不同的数据类型,但只能同事存储其中的一种类型。写法与结构类似
union one4all { int int_val; long long_cal; double double_val; }
one4all pail; pail.int_val = 15;
pail.double_val = 15.6;
用途之一:当数据项使用两种或更多种格式(但不会同时使用)时,可节省空间。例如假设管理一个小商铺目录,其中有一些商品的ID为整数,而另一些的ID为字符串,可以
struct widget { char brand[20]; int type; union id { long id_num; char id_char[20]; } id_val; }; widget prize; if(prize.type == 1) cin>>prize.id_val.id_num; else cin>>prize.id_val.id_char;
当为匿名共同体是, id_num,id_char 被视为prize的两个成员
cin>>prize.id_num;
3.p95
枚举
enum spectrum { red, orange, yellow, green, blue, };
也可设置枚举量的值,必须为整数,常态下从0开始。
4.98
指针为一变量,其储存的是值的地址,而不是值本身
int updates = 6; int *p_updates; p_updates = &updates;