结构体与共用体小结.docx
- 文档编号:23817852
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:14
- 大小:18.75KB
结构体与共用体小结.docx
《结构体与共用体小结.docx》由会员分享,可在线阅读,更多相关《结构体与共用体小结.docx(14页珍藏版)》请在冰豆网上搜索。
结构体与共用体小结
结构体与共用体小结
一,结构体的概念和定义
1,结构体的定义
struct结构体名
{
数据类型成员名1;
数据类型成员名1;
...
};
这里数据类型可以是复合类型,例如又是一个结构体类型,即嵌套;
2,结构体变量的定义
struct结构体名变量名1,变量名2,,,变量名n;
或:
struct结构体名
{
数据类型成员名1;
数据类型成员名1;
...
}结构体变量1,结构体变量2;
或:
struct
{
数据类型成员名1;
数据类型成员名1;
...
}结构体变量1,结构体变量2;
三种方式,第三种方式的话,每次要定义这个类型的结构体变量都要重复的写这
一段代码;
其实定义了结构体后,struct结构体名就是一种新的类型,上述语句就像声明
变量一样;
3,结构体变量的引用
只能对结构体变量中的各个成员分别输出,不能对一个结构体变量作为一个整体
输出;
嵌套的结构体类型的引用:
结构体变量名.结构体类型成员名.内嵌结构体的成员名;
4,结构体变量的初始化
struct结构体名变量名={初始化数据};
或者在定义的时候就初始化:
struct结构体名
{
数据类型成员名1;
数据类型成员名1;
...
}变量名={初始化数据};
二,结构体数组
1,结构体数组的定义举例
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]都是structstu类型的;
2,结构体数组的初始化和引用
略;
三,结构体与指针
1,指向结构体的指针的定义,同上,也是三种形式;
structemployeesemployee1,*p1;
或者:
structemployees
{
...
}employee1,*p1;
或者:
struct
{
...
}employee1,*p1;
然后可进行如下操作:
p1=&employee1;此时p1指向首地址;
2,用结构体变量指针来引用结构体成员的两种操作:
(*结构体变量的指针名).成员名;
如:
(*p1).name;括号不能省略,.的优先级是最高的;
或:
结构体变量的指针名->成员名;
如:
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的其他元素的地址赋给p
p=&student[3];
(3)利用指针移动如p++使p指向结构体数组的不同元素;
四,结构体作为函数参数
1,结构体变量作为函数参数
2,指向结构体变量的指针作为函数参数
略,在后续文章里将给出一个例子;
共用体的概念
在C++语言中,不同数据类型的数据可以使用共同的存储区域,这种数据构造类型称为共用体,简称共用,又称联合体。
共用体在定义、说明和使用形式上与结构体相似。
两者本质上的不同仅在于使用内存的方式上。
定义一个共用体类型的一般形式为:
union共用体名
{
成员表列;
};
例如:
uniongyt
{
inti;
charc;
floatf;
};
就定义了一个共用体类型uniongyt,它由三个成员组成,这三个成员在内存中使用共同的存储空间。
由于共用体路各成员的数据长度往往不同,所以共用体变量在存储时总是按其成员中数据长度最大的成员占用内存空间。
如:
共用体类型uniongyt的变量占用4个字节的内存。
在这一点上共用体与结构体不同,结构体类型变量在存储时总是扫各成员的数据长度之和占用内存空间。
如,定义了一个结构体类型:
structgyt
{
inti;
charc;
floatf;
};
则结构体类型structgyt的变量占用的内存为2+1+4个字节,也就是7个字节。
定义共用体变量的方法与定义结构体类型变量的方法相似,也有三种方法:
union共用体名
{
成员表列;
}变量表列;
如:
uniongyt
{
inti;
charc;
floatf;
}a,b,c;
区分共用体类型定义与共用体变量定义
uniongyt
{
inti;
charc;
floatf;
};
uniongyta,b,c;
直接定义共用体变量:
union
{
inti;
charc;
floatf;
}a,bc;
与结构体类似,也可以定义共用体指针和共用体数组。
union共用体名*共用指针名;
union共用体名数组名[元素个数];
例如:
uniongyt*pu;
uniongytu1[3];//分别定义了共用体指针pu和共用体数组u1[3]。
共用体变量的使用形式
由于共用体变量的各个成员使用共同的内存区域,所以共用体变量的内存空间在某个时刻只能保持某个成员的数据。
由此可知,在程序中参加运算的必然是共用体变量的某个成员,而不能直接使用共用体变量。
共用体变量成员的表现形式与结构体相同,它们也使用访问成员运算符"."和"->"表示。
例如,前面定义了a,b,c为共用体类型变量,下面使用形式是正确的:
a.i引用共用体变量中的整型变量i
a.c引用共用体变量中的字符变量c
a,f引用共用体变量中的实型变量f
不能只引用共用体类型变量,如:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 共用 小结
![提示](https://static.bdocx.com/images/bang_tan.gif)