文档详情

c++8 结构与联合.ppt

发布:2017-09-07约8.95千字共58页下载文档
文本预览下载声明
结构的概念 用 int、double 等简单数据类型,只能从一个特定的角度来描述事物,如用 int 型数据来描述一个人的年龄,用 double 型数据描述一个人的工资等; 结构是一种复合数据类型,它把若干数据(简单的或复合的)组织在一起,从而可综合地、多角度地描述事物; 结构的概念 结构示例: struct Person { ??char name[10]; //姓名 ??bool sex; //性别 ??int age; //年龄 ??float pay; //工资 }; 结构的概念 组成结构的数据称为结构的成员(或数据成员) 在某些场合,结构数据也称为记录,其成员也称为域、数据项或字段等; 通常使用结构是只定义它的数据成员,不定义它的成员函数。 结构的定义 —— 定义格式: struct 结构类型名 { ? ? 成员定义1 ? ? 成员定义2 ????? ??? ???????????????? ? ? 成员定义n }; 结构的定义 格式中的 成员定义 与变量定义的格式基本相同,只是不允许初始化,如: 结构的定义 由于不能初始化,结构中无法定义引用成员 结构中的可以有结构成员,如: struct Person{…}; struct CLASS{ //班级 char class_id[10]; //班号 Person monitor; //班长 int num_of_student;//人数 }; 结构的定义 结构中可以包含指向另一结构数据的指针,例如: struct AA{…}; struct BB{ int b; AA *pAA; }; 结构的定义 结构中甚至可以包含指向自身的的指针,例如: struct F{ double data; F *next; }; 结构的定义 如果两个结构都包含有指向对方的指针,则其中一个结构必须提前声明,例如: struct BB{…;AA *pa;…}; struct AA{…;BB *pb;…}; 结构的定义 如果两个结构都包含有指向对方的指针,则其中一个结构必须提前声明,例如: struct BB{…;AA *pa;…}; struct AA{…;BB *pb;…}; 结构体变量的定义、初始化 定义格式: 【struct】结构类型名 变量名 【={初始化数据}│同类型变量名】, ? ; 举例: struct Arith{ ??????char op; ??????int a,b; }; 结构体变量的定义、初始化 struct Arith x,y; Arith z1={+,10,xx}, z2={*,60}, z3=z1; Arith *d=z1; Arith a[4]={ {+,3,7},{?,10,5}, {*,6,4},{/,8,5} }; Arith *b[]={z1,z2,a+2,a[3]}; 结构体变量的定义、初始化 可以在定义结构类型的同时定义结构变量,例如: struct AAA { ??????char s[20]; ??????int top; } a1={MicroSoft,0}, a2=a1, a3, *ap; 注意: 如无特别必要,还是分开定义进行为好。 结构体变量的定义、初始化 结构类型的定义和结构变量的定义同时进行时,结构类型可以是无名的(常用于定义结构中的结构成员),例如: struct BBB { ??????char name[10]; ??????struct{ ????????int yy,mm,dd; ??????} birth; }; 结构体变量的定义、初始化 new运算符创建动态结构变量或动态结构数组,如: Airth *p = new Arith; Airth *q = new Arith [n]; delete删除占用的空间 delete p; delete [ ]q; 结构体变量的定义、初始化 用初始化数据对结构变量初始化,是将每个成员值依次复制到变量的相应域中。 当仅对结构变量的部分成员初始化时,未被初始化的成员由系统自动置为0。 全局域和文件域结构变量和static局部结构变量未被初始化时,每个成员被系统自动赋为0。 非静态的局部结构变量未被初始化时,它的每个成员的值是随意的,即不确定。 结构数据所占用的空间 结构数据所占空间的大小,理论上等于各成员大小之和。例如: sizeof(Arith) 应等于 sizeof(op) +sizeof(a) +si
显示全部
相似文档