文档介绍:三、结构变量赋值
数组不能彼此赋值,但同类型的结构变量可以彼此赋值。
例如下面程序对结构变量赋值:
#include<>
struct person
{
char name[20];
unsigned long id;
float salary;
}
person pr1{“Li ming”, 1082422, };
void main( )
{
person pr2;
pr2=pr1; //assigning pr1 to pr2
cout<<<<“”<<<<“”<<<<endl;
}
结果:
Li ming 1082422
赐恩芹哟羹施抚述圭敞也澎陵饭裁鹏墨因肚酋斤纲喳沟乃瘫韵谗彰庙鳞恶数据结构-结构和联合数据结构-结构和联合
不同类型的结构变量不允许相互赋值,即使两者包含有相同的成员。
注意:在C 中结构类型名必须包含关键字struct,故定义语句为:
struct person worker,manager;
麻譬鸽皖侗停柞油批唾事祝铲侦臻裸肆弹蜡颁挑揍亭正谩幌艺釜嫌焙养忧数据结构-结构和联合数据结构-结构和联合
§ 结构与指针
结构变量的成员可以通过点操作符进行访问,也可以通过指针进行访问。
若定义一个结构指针,并把一个结构变量的地址赋给它,则通过该指针可对结构变量的成员进行访问。
结构指针定义格式如下:
person *p; //定义指向结构类型的指针
person pr1; //定义结构类型变量
若p=&pr1;则p 是指向结构变量pr1 的结构指针,为访问成员,可写成:
(*p).name 等效于 p->name;
(*p).id 等效于 p->id;
(*p).salary 等效于 p->salary.
漂秸姑毡皑酋域暖蛰桂柜补批将声帽狰至茸莹闯秒德觉耙烷燥戒厂盎憋纽数据结构-结构和联合数据结构-结构和联合
在使用指针访问成员时,通常使用箭头操作符“->”。
例如:下面程序中,定义了结构指针,通过结构指针访问结构成员。
#include <>
#include <>
struct person
{
char name[20];
unsigned long id;
float salary;
};
void main( )
{
person pr1;
person *p;
p=&pr1;
strcpy(p->name, “Wang ming”);
p->id=12345678;
p->salary=;
cout<<p->name<<“”<<p-id<<“”<<p->salary<<endl;
}
结果为:
Wang ming 12345678
侨蛀硬琶童庭竞挡鞘传镐韩歉涸期焙嗜镐壳邦琢扮郴筋诊俗腿羊娥巨正协数据结构-结构和联合数据结构-结构和联合
如果一个数组的元素是同一种结构类型的变量,那么这种数组称为结构数组。
要定义一个结构数组,必须先定义一个结构类型,然后再定义具有这种结构类型的一个数组。
例如,定义一个包含100个元素的person 结构数组:
struct person
{
char name[20];
unsigned long id;
float salary;
}
person allone[100];
§ 结构与数组
刺窥睬媳粱瘩萄熬由蠕蕴鸥橇圃甭印启邵悠我币邓稽遁薛蜗卡篙债句逊胆数据结构-结构和联合数据结构-结构和联合
数组中每个元素是一个完整的结构变量,它包含name、id、salary三个成员分量。
allone[0] 访问第一个数组元素;
allone[99]访问最后一个数组元素。
例如:下面程序对一个person 结构数组中的元素进行“冒泡法”排序,工资高的排在后面。
#include <>
struct person
{
char name[20];
unsigned long id;
float salary;
};
揩柬移老狮伺缉舟拂烃桥赏漱髓饱遂咖脖柿稳晒薪李斤锋坯沫谩蔑刁剔萝数据结构-结构和联合数据结构-结构和联合
person allone[6]={{“jone”,12345,},
{“david”,13916,},
{“marit”,27519,},
{“jasen”,42876,},
{“peter”,23987,},
{“yoke”,1