2.1.3 构造数据类型(3)
3) 结构体变量的使用形式和初始化
(1) 结构体变量的使用形式
定义了结构体变量后,就可以使用这个变量。结构体变量是不同数据类型的若干数据的集合体。在程序中使用结构体变量时,一般情况下不能将其作为一个整体参加数据处理,而参加各种运算和操作的是结构体变量的各个成员项数据。
结构体变量的成员用以下一般形式表示:
- 结构体变量名.成员名
例如,上节给出的结构体变量worker1具有下列7个成员:
- worker1.number;worker1.name;worker1.sex;worker1.age;worker1.salary;worker1.address;worker1.phone
定义结构体变量后,就可以用不同的赋值方法对结构体变量的每个成员赋值。如下所示:
- strcpy(worker1.name,"Zhang San");
- worker1.age=26;
- strcpy(worker1.phone,"1234567");
- worker1.sex='m';
除此之外,还可以引用结构体变量成员的地址以及成员中的元素。例如:引用结构体变量成员的首地址&worker1.name;引用结构体变量成员的第二个字符worker1.name[1];引用结构体变量的首地址&worker1。
在使用结构体类型变量时有以下几点需要加以注意。
不能将一个结构体类型变量作为一个整体加以引用,只能对结构体类型变量中的各个成员分别引用。
例如,对上面定义的结构体类型变量wan,下列引用都是错误的:
- cout<<wan;
- cin>>wan;
但是可以如下引用:
- cout<<wan.name;
- cin>>wan.name;
如果成员本身又属一个结构体类型,则要用若干个成员运算符,一级一级地找到最低的一级成员。只能对最低级的成员进行赋值或存取以及运算。例如,对上面定义的结构体类型变量worker1,可以这样访问各成员:
- worker1.age
- worker1.name
- worker1.birthday.year
- worker1.birthday.month
- worker1.birthday.day
注意:
不能用worker1.birthday来访问worker1变量中的成员birthday,因为birthday本身是一个结构体变量。
对成员变量可以像普通变量一样进行各种运算(根据其类型决定可以进行的运算)。如下所示:
- worker2.age=worker1.age;
- sum=worker1.age+worker2.age;
- worker1.age++;
在数组中,数组是不能彼此赋值的,而结构体类型变量可以相互赋值。
在C++程序中,同一结构体类型的结构体变量之间允许相互赋值,不同结构体类型的结构体变量之间不允许相互赋值,即使两者包含有同样的成员。