5.1.4 结构变量间是否可以相互赋值

    数组可以看成是一组相同类型数据的结合,而结构可以看做是一组不同类型数据构成的整体,在第3章中介绍过,除了可以对字符数组进行整体的输入输出外,C++一般不允许对数组进行整体的操作,必须通过元素遍历的方式实现对数组的整体操作,那么,结构变量间是否允许相互赋值呢?答案是肯定的。

    可以使用赋值操作符“=”将一个结构变量B赋值给另一个结构变量A,这样,结构变量A中的每个成员都将被设置成结构变量B中相应成员的值,即使成员是数组类型也不例外,这种赋值方式被称为成员赋值,见代码5.3。

    代码5.3 结构变量间的赋值操作AssignmentBetweenVariables


    <——————————-文件名:example503.cpp————————————————-> 01 #include<iostream> 02 struct computer//定义结构computer 03 { 04 char brand[10]; 05 float price; 06 }; 07 int main() 08 { 09 using namespace std; 10 //声明两个结构变量com1和com2,并初始化 11 computer com1={"Apple",7000}; 12 computer com2={"Lenovo",8000}; 13 cout<<"赋值前:电脑品牌为"<<com1.brand<<",电脑价格为"<<com1.price<<endl; 14 com1=com2;//用com2给com1赋值 15 cout<<"赋值后:电脑品牌为"<<com1.brand<<",电脑价格为"<<com1.price<<endl; 16 return 0; 17 }

    输出结果如下所示。


    赋值前:电脑品牌为Apple,电脑价格为7000 赋值后:电脑品牌为Lenovo,电脑价格为8000

    【代码解析】在main()函数外部定义了computer结构,在main()函数内声明了两个结构变量com1和com2,在声明的同时分别对其进行了初始化,代码第14行,语句“com1=com2;”用结构变量com2对com1赋值,输出结果显示,com1中的数据在赋值后已经被改写,即便是字符数组型的成员brand,也完成了赋值操作。

    技巧利用结构来处理数组的整体赋值操作,是个不错的思路。