您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > [华工课件]C++程序设计基础(第三版)chap5-结构
华南理工大学计算机学院周霭如2009chap5结构5.1定义结构和访问结构5.2结构数组5.3链表小结华南理工大学计算机学院周霭如2009结构由数目固定的成员构成各成员可以具有不同的数据类型一个结构变量在内存占有一片连续的存储空间5.1定义结构和访问结构华南理工大学计算机学院周霭如2009结构类型定义形式为:struct标识符{类型成员1;类型成员2;…类型成员n;};5.1.1定义结构例:structemployee{charname[10];longcode;doublesalary;charaddress[50];charphone[20];};类型名华南理工大学计算机学院周霭如20095.1.1定义结构例:structemployee{charname[10];longcode;doublesalary;charaddress[50];charphone[20];};可以用不同方法定义一个结构变量(1)声明类型之后声明变量employeeworker1,worker2,*Emp;华南理工大学计算机学院周霭如20095.1.1定义结构例:structemployee{charname[10];longcode;doublesalary;charaddress[50];charphone[20];};可以用不同方法定义一个结构变量(1)声明类型之后声明变量worker1,worker2,*Emp;(2)声明类型的同时声明变量华南理工大学计算机学院周霭如20095.1.1定义结构例:structemployee{charname[10];longcode;doublesalary;charaddress[50];charphone[20];};可以用不同方法定义一个结构变量(1)声明类型之后声明变量worker1,worker2,*Emp;(2)声明类型的同时声明变量(3)直接声明结构类型变量注意此时没有了结构类型标识符华南理工大学计算机学院周霭如20095.1.1定义结构例:structemployee{charname[10];longcode;doublesalary;charaddress[50];charphone[20];};employeeworker1,worker2,*Emp=&worker1;说明(1)结构变量占有一片连续内存空间,具有结构类型的特征WangLi9910834561200.5guangzhou87111111worker1Emp华南理工大学计算机学院周霭如20095.1.1定义结构说明(2)一个结构类型的成员可以是另一个已定义的结构类型structdate{intmonth;intday;intyear;};structemployee{charname[10];datebirthday;longcode;doublesalary;charaddress[50];charphone[11];}worker1,worker2;例如:为职工结构添加出生日期信息类型和变量声明为:华南理工大学计算机学院周霭如2009personson;5.1.1定义结构说明(2)一个结构类型的成员可以是另一个已定义的结构类型structperson{charname[10];longcode;doublesalary;charaddress[50];charphone[11];}worker1,worker2;错误不能实现的无穷递归结构华南理工大学计算机学院周霭如20095.1.1定义结构说明(3)声明结构类型变量可以同时初始化structemployee{charname[10];longcode;doublesalary;charaddress[50];charphone[11];}worker={WangLi,991083456,1200.5,guangzhou,87111111};华南理工大学计算机学院周霭如2009(1)访问结构变量的成员结构变量.成员点运算符//例5-1#includeiostreamusingnamespacestd;structweather//声明结构类型{doubletemp;doublewind;};intmain(){weathertoday;//声明结构类型变量today.temp=10.5;//对结构变量成员赋值today.wind=3.1;cout“Temp=”today.tempendl;//按成员输出cout“Wind=”today.windendl;}访问结构变量成员5.1.2访问结构5.1.2访问结构华南理工大学计算机学院周霭如2009(2)用指针访问结构变量的成员结构指针-成员(*结构指针).成员//例5-2#includeiostreamusingnamespacestd;#includecstringstructperson{charname[20];unsignedlongid;doublesalary;};intmain(){personpr1;person*pp;//定义结构指针pp=&pr1;//取结构变量地址strcpy(pp-name,“DavidMarat”);//对结构成员赋值pp-id=987654321;pp-salary=335.0;coutpp-name‘\t’pp-id‘\t’pp-salaryendl;}person*pp;pp=&pr1;pp-namepp-idpp-salary5.1.2访问结构5.1.2访问结构华南理工大学计算机学院周霭如2009(2)用指针访问结构变量的成员结构指针-成员(*结构指针).成员//例5-2#includeiostreamusingnamespacestd;#includecstringstructperson{charname[20];unsignedlongid;doublesalary;};intmain(){personpr1;person*pp;//定义结构指针pp=&pr1;//取结构变量地址strcpy(pp-name,“DavidMarat”);//对结构成员赋值pp-id=987654321;pp-salary=335.0;coutpp-name‘\t’pp-id‘\t’pp-salaryendl;}(*pp).name(*pp).id(*pp).salary5.1.2访问结构5.1.2访问结构华南理工大学计算机学院周霭如2009//例5-3#includeiostreamusingnamespacestd;structweather{doubletemp;doublewind;}yesterday;intmain(){weathertoday;yesterday.temp=10.5;yesterday.wind=3.1;today=yesterday;//结构变量整体赋值cout“Temp=”today.tempendl;cout“Wind=”today.windendl;}(3)类型相同的结构变量可以整体赋值5.1.2访问结构5.1.2访问结构华南理工大学计算机学院周霭如2009(3)类型相同的结构变量可以整体赋值例如:structweather1{doubletemp;doublewind;}yesterday;structweather2{doubletemp;doublewind;}today;“类型相同的变量”是指用同一类型标识符说明的变量yesterday和today尽管成员相同,但不是同类型变量不可以整体赋值5.1.2访问结构5.1.2访问结构华南理工大学计算机学院周霭如20095.2结构数组华南理工大学计算机学院周霭如2009例如structS_type{inta;doublex;};S_typeS_ary[10];S_ary是一个有10个元素的数组,元素类型是S_type。数组的每一个元素包含两个数据成员。S_ary[0].aS_ary[0].xS_ary[1].aS_ary[1].x……S_ary[9].aS_ary[9].x5.2结构数组5.2结构数组数组的元素类型为结构类型时,称为结构数组。华南理工大学计算机学院周霭如2009#includeiostreamusingnamespacestd;structperson//结构定义{charname[10];unsignedintid;doublesalary;};personallone[6];//结构数组声明intmain(){inti;persontemp;//结构变量声明for(i=0;i6;i++)//输入数据{couti:name:;cgets(allone[i].name);coutid:;cinallone[i].id;coutsalary:;cinallone[i].salary;coutendl;};coutSort:\n;for(i=1;i6;i++)//以成员salary作关键字排序{for(intj=0;j=5-i;j++){if(allone[j].salaryallone[j+1].salary)//结构变量的整体交换{temp=allone[j];allone[j]=allone[j+1];allone[j+1]=temp;}}}for(i=0;i6;i++)//输出排序后数据coutallone[i].name'\t'allone[i].id'\t'allone[i].salaryendl;}例5-4对结构数组以某一成员作关键字排序5.2结构数组华南理工大学计算机学院周霭如2009#includeiostreamusingnamespacestd;structperson//结构定义{charname[10];unsignedintid;doublesalary;};personallone[6];//结构数组声明intmain(){inti;persontemp;//结构变量声明for(i=0;i6;i++)//输入数据{couti:name:;cgets(allone[i].name);coutid:;cinallone[i].id;coutsalary:;cinallone[i].salary;coutendl;};coutSort:\n;for(i=1;i6;i++)//以成员salary作关键字排序{for(intj=0;j=5-i;j++){if(allone[j].salaryallone[j+1].salary)//结构变量的整体交换{temp=allone[j];allone[j]=allone[j+1];allone[j+1]=temp;}}}for(i=0;i6;i++)//输出排序后数据coutallone[i].name'\t'allone[i].id'\t'allone[i].salaryendl;}例5-4对结构数组以某一成员作关键字排序structperson//结构定义{charname[10];unsignedintid;doublesalary;};personallone[6];//结构数组声明5.2结构数组华南理工大学计算机学院周霭如2009#includeiostreamusingnamespacestd;structperson//结构定义{charname[10];unsignedintid;doublesalary;};personallone[6];//结构数组声明intmain(){inti;persontemp;//结构变量声明for(i=0;i6;i++)//输入数据{cout
本文标题:[华工课件]C++程序设计基础(第三版)chap5-结构
链接地址:https://www.777doc.com/doc-3797817 .html