欢迎来到天天文库
浏览记录
ID:56714810
大小:32.50 KB
页数:14页
时间:2020-07-05
《结构体与共用体小结.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、结构体与共用体小结一,结构体的概念和定义1,结构体的定义struct结构体名{ 数据类型成员名1; 数据类型成员名1; ...};这里数据类型可以是复合类型,例如又是一个结构体类型,即嵌套; 2,结构体变量的定义struct结构体名变量名1,变量名2,,,变量名n;或:struct结构体名{ 数据类型成员名1; 数据类型成员名1; ...}结构体变量1,结构体变量2;或:struct{ 数据类型成员名1; 数据类型成员名1; ...}结构体变量1,结构体变量2;三种方式,第三种方式的话,每次要定义这个类型
2、的结构体变量都要重复的写这一段代码; 其实定义了结构体后,struct结构体名就是一种新的类型,上述语句就像声明变量一样; 3,结构体变量的引用只能对结构体变量中的各个成员分别输出,不能对一个结构体变量作为一个整体输出;嵌套的结构体类型的引用:结构体变量名.结构体类型成员名.内嵌结构体的成员名; 4,结构体变量的初始化struct结构体名变量名={初始化数据};或者在定义的时候就初始化:struct结构体名{ 数据类型成员名1; 数据类型成员名1; ...}变量名={初始化数据}; 二,结构体数组1,结构
3、体数组的定义举例structstu{ intstu_nu; charname[20]; floatscore;};structstustudent[5];或者:structstu{ intstu_nu; charname[20]; floatscore;}student[5];或者:struct{ intstu_nu; charname[20]; floatscore;}student[5];跟定义结构体变量的三种形式是一样的,只不过这里每次定义的结构体变量是一个数组;每一个student[i]都是str
4、uctstu类型的; 2,结构体数组的初始化和引用略; 三,结构体与指针1,指向结构体的指针的定义,同上,也是三种形式;structemployeesemployee1,*p1;或者:structemployees{ ...}employee1,*p1;或者:struct{ ...}employee1,*p1;然后可进行如下操作:p1=&employee1;此时p1指向首地址; 2,用结构体变量指针来引用结构体成员的两种操作:(*结构体变量的指针名).成员名;如:(*p1).name;括号不能省略,.的优
5、先级是最高的;或:结构体变量的指针名->成员名;如:p1->name;注意.和->的优先级是最高的;employee1.name;(*p1).name;p1->name;是等价的; 3,结构体数组与指针structstu{ intstu_nu; charname[20]; floatscore;}student[5],*p;此时可以(1)把数组student的起始地址赋给p:p=student;此时p指向student[0];(2)也可把student的其他元素的地址赋给pp=&student[3];(3
6、)利用指针移动如p++使p指向结构体数组的不同元素; 四,结构体作为函数参数1,结构体变量作为函数参数2,指向结构体变量的指针作为函数参数略,在后续文章里将给出一个例子; 共用体的概念在C++语言中,不同数据类型的数据可以使用共同的存储区域,这种数据构造类型称为共用体,简称共用,又称联合体。共用体在定义、说明和使用形式上与结构体相似。两者本质上的不同仅在于使用内存的方式上。定义一个共用体类型的一般形式为:union共用体名{成员表列;};例如:uniongyt{inti;charc;floatf;};就定
7、义了一个共用体类型uniongyt,它由三个成员组成,这三个成员在内存中使用共同的存储空间。由于共用体路各成员的数据长度往往不同,所以共用体变量在存储时总是按其成员中数据长度最大的成员占用内存空间。如:共用体类型uniongyt的变量占用4个字节的内存。在这一点上共用体与结构体不同,结构体类型变量在存储时总是扫各成员的数据长度之和占用内存空间。如,定义了一个结构体类型:structgyt{inti;charc;floatf;};则结构体类型structgyt的变量占用的内存为2+1+4个字节,也就是7个字
8、节。定义共用体变量的方法与定义结构体类型变量的方法相似,也有三种方法:union共用体名{成员表列;}变量表列;如:uniongyt{inti;charc;floatf;}a,b,c;区分共用体类型定义与共用体变量定义uniongyt{inti;charc;floatf;};uniongyta,b,c;直接定义共用体变量:union{inti;charc;floatf;}a,bc;与结构体类似,也可以定义共用体指针和共用体数组
此文档下载收益归作者所有