1.C++允许在声明结构变量时省略关键字struct,就像这样:
#include <iostream>
using namespace std ;
struct inflatable
{
char name[20] ;
float volume ;
double price ;
} ;
inflatable hat ;
inflatable woopie_cushion ;
inflatable mainframe ;
inflatable goose ;
inflatable vincent ;
int main()
{
return 0 ;
}
访问类成员函数(如cin.getline( ))的方式是从访问结构成员变量
(如vincent.price)的方式衍生而来的。
2.结构变量的初始化:
比如下面的结构类型
struct inflatable
{
char name[20] ;
float volume ;
double price ;
} ;
可采用这样的初始化方式:
inflatable guest =
{
"Glorious Gloria",
1.88,
29.99
} ;
或
inflatable duck = {"Daphne", 0.12, 9.98} ;
还可将等号去掉:
inflatable pal
{
"Audacious Arthur",
3.12,
32.99
} ;
inflatable duck {"Daphne", 0.12, 9.98} ;
3.C++结构变量的初始化中,若大括号内未包含任何东西,则各个成员将被设为0。且不允许缩窄转换。
缩窄指的是变量的类型可能无法表示赋给它们的值。例如,不允许将浮点型转换为整型。
4.C++使用户定义的类型与内置类型尽可能相似。例如,可以将结构作为参数传递给函数,也可以让函数返回一个结构。另外,还可以使用赋值运算符( = )将结构赋值给另一个同类型的结构,即使成员是数组。
5.可以同时完成定义结构和创建结构变量的工作:
struct perks
{
int key_number ;
char car[12] ;
} mr_smith, ms_jones ;
甚至可以初始化以这种方式创建的变量:
struct parks
{
int key_number ;
char car[12] ;
} mr_glitz =
{
7,
"Packard"
};
6.关于结构数组的初始化,可采用如下方法:
struct inflatable
{
char name[20] ;
float volume ;
double price ;
} ;
inflatable guests[2] =
{
{"Bami", 0.5, 21.99},
{"Godzilla", 2000, 565.99}
} ;
7.共用体能够存储不同的数据类型,但只能同时存储其中的一种类型。也就是说,结构可以同时存储int、long和double。共用体只能存储int、long或double。也就是一次只能存储一种类型的值。下面的代码说明了这一点:
#include <iostream>
using namespace std ;
union one4all
{
int int_val ;
long long_val ;
double double_val ;
} ;
int main()
{
one4all pail ;
cout << "The first value: " << endl ;
pail.int_val = 15 ;
cout << "pail.int_val = " << pail.int_val << endl ;
cout << "pail.long_val = " << pail.long_val << endl ;
cout << "pail.double_val = " << pail.double_val << endl << endl ;
cout << "The Second value: " << endl ;
pail.long_val = 1000000000 ;
cout << "pail.int_val = " << pail.int_val << endl ;
cout << "pail.long_val = " << pail.long_val << endl ;
cout << "pail.double_val = " << pail.double_val << endl << endl ;
cout << "The Third value: " << endl ;
pail.double_val = 1.38 ;
cout << "pail.int_val = " << pail.int_val << endl ;
cout << "pail.long_val = " << pail.long_val << endl ;
cout << "pail.double_val = " << pail.double_val << endl << endl ;
return 0 ;
}
运行结果:
The first value:
pail.int_val = 15
pail.long_val = 15
pail.double_val = 7.41098e-323
The Second value:
pail.int_val = 1000000000
pail.long_val = 1000000000
pail.double_val = 4.94066e-315
The Third value:
pail.int_val = -515396076
pail.long_val = 4608893786658418196
pail.double_val = 1.38
8.共用体用途之一是,当数据项使用两种或更多格式时(但不会同时使用),可节省空间,假设管理一个小商品目录,其中有一些商品的ID为整数,而另一些的ID为字符串。在这种情况下可以这样做:
struct widget
{
char brand[20] ;
int type ;
union id
{
long id_num ;
char id_char[20] ;
} id_val ;
} ;
还可以使用匿名共用体,其成员将成为位于相同地址出的变量。显然,每次只有一个成员是当前的成员:
struct widget1
{
char brand[20] ;
int type ;
union
{
long id_num ;
char id_char[20] ;
} ;
} ;