结构体与共用体小结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
结构体与共用体小结
一,结构体得概念与定义
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,结构体数组得定义举例struct stu
{
int stu_nu;
char name[20];
float score;
};
struct stu student[5];
或者:
struct stu
{
int stu_nu;
char name[20];
float score;
}student[5];
或者:
struct
{
int stu_nu;
char name[20];
float score;
}student[5];
跟定义结构体变量得三种形式就是一样得,只不过这里每次定义得结构体变量就是一个数组;每一个student[i]都就是struct stu类型得;
2,结构体数组得初始化与引用
略;
三,结构体与指针
1,指向结构体得指针得定义,同上,也就是三种形式;
struct employees employee1,*p1;
或者:
struct employees
、、、
}employee1,*p1;
或者:
struct
{
、、、
}employee1,*p1;
然后可进行如下操作:p1 = &employee1;此时p1指向首地址;
2,用结构体变量指针来引用结构体成员得两种操作:
(*结构体变量得指针名)、成员名;
如:(*p1)、name;括号不能省略,、得优先级就是最高得;
或:
结构体变量得指针名>成员名;
如:p1>name;
注意、与>得优先级就是最高得;
employee1、name;
(*p1)、name;
p1>name;
就是等价得;
3,结构体数组与指针
struct stu
{
int stu_nu;
char name[20];
float score;
}student[5],*p;
此时可以
(1)把数组student得起始地址赋给p:
p = student;此时p指向student[0];
(2)也可把student得其她元素得地址赋给p
p = &student[3];
(3)利用指针移动如p++使p指向结构体数组得不同元素;
四,结构体作为函数参数
1,结构体变量作为函数参数
2,指向结构体变量得指针作为函数参数
略,在后续文章里将给出一个例子;
共用体得概念
在C++语言中,不同数据类型得数据可以使用共同得存储区域,这种数据构造类型称为共用体,简称共用,又称联合体。共用体在定义、说明与使用形式上与结构体相似。两者本质上得不同仅在于使用内存得方式上。定义一个共用体类型得一般形式为:
union 共用体名
{
成员表列;
};
例如:
union gyt
{
int i;
char c;
float f;
};
就定义了一个共用体类型union gyt,它由三个成员组成,这三个成员在内存中使用共同得存储空间。由于共用体路各成员得数据长度往往不同,所以共用体变量在存储时总就是按其成员中数据长度最大得成员占用内存空间。如:共用体类型union gyt得变量占用4个字节得内存。
在这一点上共用体与结构体不同,结构体类型变量在存储时总就是扫各成员得数据长度之与占用内存空间。如,定义了一个结构体类型:
struct gyt
{
int i;