结构体类型
- 数组是一种数据形式,其特点是多个相同类型的元素集合起来;
- 结构体是另一种重要的数据形式,特点是将不同类型的成员组合起来。
- 数组和结构体形成了两种风格迥异的聚合方式,通过他们及其相互组合、嵌套的机制可以构造出复杂的、满足应用要求的自定义数据类型。
一、定义结构体类型
struct 结构体类型名 {
成员列表
};
struct STUDENT{
int no;
char name[21];
char sex;
int age;
char qq[11];
double score;
};
1、结构体类型声明一般放在程序文件开头,此时这个声明是全局的。在全局作用域内,该声明处处可见,因此同作用域内的所有函数都可以使用它。
2、结构体类型的声明也可以放在函数内部,此时这个声明是局部的。
说明:
(1)结构体类型和普通数据类型(eg:int ,char ,double 等)一样是类型名称,而不是该类型的一个实体,因此不会为结构体类型分配存储空间。
(2)结构体类型声明时成员可以又是结构体类型;
二、结构体类型的实例化
1、定义结构体对象有两种形式
(1)结构体类型名 结构体对象名列表;
STUDENT a,b;//定义结构体对象
(2)
结构体类型名{
成员列表
} 结构体对象名列表;
DATE{
int year ,month,day;
} d1,d2;//定义结构体对象
三、结构体对象的内存形式
实例化结构体对象后,对象会得到存储空间。
struct STUDENT{
int no;
char name[21];
char sex;
int age;
char qq[11];
double score;
};
可以在结构体对象定义时进行初始化
struct STAFF{
int no;
char name[21];
char sex;
DATA birthday;
double salary;
} s1,s2;
STAFF S1={
1001,"Shang xiao yu",'W',{
1990,10,6},2700.0};
STAFF s2={
1002,"bobo",'M',1994,3,10,1200000.0};
四、结构体对象成员引用
结构体对象名.成员名;
STAFF a,b;
a.no=1002;
a.no++;
1、如果成员本身又是一个结构体对象,就要用成员引用运算符,一级一级的引用。
STAFF x;
x.birthday.year=1994;
x.birthday.month=3