一、用户自定义类型(user-definedtype,UDT):程序员定义的数据类型。
常见的UDT包括:结构体(structure)类型、共用体(union)类型、枚举(enumeration)类型等。
二、结构体类型
一般形式为:
struct 结构体名
{
类型成员名1;
类型成员名2;
…
类型成员名n;
};
注意!:
1.struct是结构体类型的关键字,是structure的缩写,在定义时必不可少;
2.另一个必不可少的是最后的分号。
3.虽然结构体类型是程序员自定义的数据类型,但是,一旦定义完毕,它与int、float等基本数据类型地位相同。因此,可以用结构体类型来定义变量,这种变量称为结构体变量。
三、定义结构体变量的三中形式
1.sruct student
{
intnum;
char name[10]; 先声明类型,再定义变量
char sex;
float height;
};
struct student s1;
2.struct student
{
intnum; 声明类型的同时定义变量
charname[10];
charsex;
floatheight;
}s1;
3.struct
{
intnum; 直接定义变量,不出现结构体名
charname[10];
charsex;
floatheight;
}s1;
四、结构体变量的初始化
struct student
{
int num;
charname[10];
charsex;
floatheight;
};
struct students={99001,"李明",'M',1.75};
struct student
{
int num;
char name[10];
char sex;
float height;
}s={99001,"李明",'M',1.75};
五、结构体变量的引用
可以按照形式:结构体变量名.成员
来引用每个成员,其中“.”称为成员运算符,它的优先级最高
eg:s1.name;
s1.age;…
注意:1、两个同类型结构体变量可直接进行赋值运算。
2、不能将结构体变量作为一个整体进行输入或输出。
eg:d1为结构体变量
scanf("%d%d%d",&d1);//错误
scanf("%d%d%d",&d1.year,&d1.month,&d1.day);//错误
printf("%d-%d-%d",d1);//错误
printf("%d-%d%d",d1.year,d1.month,d1.day);
//错误
3.在定义结构体类型时,其成员的类型可以是某结构体类型。
4、可以使用结构体变量的成员的地址