结构体与共用体
1.定义
在实际问题中,一组数据往往具有不同的数据类型。因为数组中各个元素的类型和长度都必须一致,以便于编译系统处理。为了解决这个问题,c语言给出了另一种构造数据类型--“结构(structure)”或叫“结构体”。
一般形式:
struct 结构体
{成员列表};
成员表列由若干个成员组成,每个成员都是该结构的一个组成部分。对每个成员也必须作类型说明,其形式为: 类型说明符 成员名;
成员名的命名符合标识符的书写规定。例如:
struct stu
{
int num;
char name[20];
char sex;
float score;
}
|
在这个结构定义中,结构名为stu,该结构由4个成员组成。结构定义之后,即可进行变量说明。凡说明为结构stu的变量都由上述4个成员组成。
2. 结构类型变量的说明
说明结构变量有以下三种方法
1)先定义结构,再说明结构变量
如:
struct str
{
int num;
char name[20];
char sex;
float score;
};
struct stu dd1,dd2;
说明了两个变量dd1,dd2为stu结构类型。也可以用宏定义使一个符号常量来表示一个结构类型。
例如:
#define STU struct stu
STU
{
int num;
int name[20];
char sex;
float score;
};
STU boy1,boy2;
|
2)在定义结构类型的同时说明结构变量
例如:
struct stu
{
int num;
char name[20];
char sex;
float score;
}boy1,boy2;
其格式为:
struct 结构名
{
成员表列
}变量名表列;
3)直接说明结构变量
例如:
struct
{
int num;
char name[20];
char sex;
float score;
}boy1,boy2;
这种格式:
struct
{
成员列表
}变量名表列;
|
成员也可以又是一个结构,即构成了嵌套的结构。
例如:
struct date
{
int month;
int day;
int year;
};
struct{
int num;
char sex;
struct date birthday;
}boy1,boy2;
|
3.结构变量成员的表示方法
表示结构变量成员的一般形式是:
结构变量名.成员名
例如:
boy1.num
boy2.sex
boy1.birthday.month
4.结构变量的赋值就是给各成员赋值。可用输入语句或赋值语句来完成。
5.结构变量的初始化
例子:
和其他类型变量一样,对结构变量可以在定义时进行初始化赋值。
main()
{
struct{
int num;
char *name;
char sex;
float score;
}boy1;boy2={102."asdfsd",'F',45.3};
boy2=boy1;
printf("Num=%d\nName=%s\n",boy2.num,boy2.name);
}
|
6.结构体和共用体
结构体是各成员长度之和,而共用体是最长成员的长度,也就是同一时刻只能有一个成员在内存驻存。结构体主要用于处理数组不能处理不同数据类型的组合,而结构体可以包含不同类型的数据。共用体的使用是为了节约内存和一些巧妙方法的实现。
例子:
struct ABC
{
int a;
short b;
char c;
};
union ABC
{
int a;
short b;
char c;
}
对于structABC来说内存分配如下:
x1 x1到x4 是int a;
x2
x3
x4
x5 x5 x6 是shortb;
x6
x7 x7是char c;
共7B
union ABC内存布局如下:
x1 x1到x4是int a; x1 x2是short b; x1是char c;
x2
x3
x4
x5
共 4B 共用体计长度最长的
}
|
阅读(570) | 评论(0) | 转发(0) |