一、结构体和共用体以或用户定义类型
如:typedef 类型名 标识符; typedef int INTEGER 该语句把INEGER说明成了一个int 的类型名,在此说明之后,可以用标识符INTEGER来定义整型变量 例如:INEGER a; 等价于int a; 例如:typedef char *CHARP CHARP P; 等价于char *p;二、说明一个新的类型名的具体步骤:
char p 到 char CHARP; 再到 typedef char*CHARP;
四、结构体类型的说明 ①结构体类型的说明
struct 结构体标志名 //如:struct student { 类型名 1 结构成员名表1;//如:char 类型名 2 结构成员名表2; …… 类型名 n 结构成员名表 n; };②
(1)struct 是关键字,是结构体类型的标志。 (2) ***结构体标志名***和***结构体成员名***都是用户定义的标识符 其中***结构体标志名***是可选项,在说明中可以不出现的,每个结构体成员名表中都可以有多个同类 型 的成员名,他们之间可以用逗号隔开, (3)结构体中的成员名可以和程序中对的其他变量同名;不同结构体中的成员也可以同名 (4)结构体说明要以分号结尾。 例如我们关于日期的说明可以如下:
struct date { int year; int month; int day; };②关于上述学生档案的结构体类型可以说明结构体的嵌套如下:
struct student { char name[12]; char sex; struct date { int year; int month; int day; }birthday;//这个体现了结构体的嵌套 flaot sc[4]; };五、四种方式去定义结构体类型的变量,数组和指针变量 (1)紧跟在结构体类型名说明进行定义 ①例如:
struct student { char name[12]; char sex; struct date birthday; float sc[4]; }std ,pers[3], *pstd;②
struct { char name[12]; char sex; struct date birthday; float sc[4]; }std ,pers[3] ,*pstd;③先说明后定义
struct student { char name[12]; char sex; struct date birthday; float sc[4]; }; struct student std ,pers[3], *pstd;//总结:先说明后定义,说明时不能省略结构体标志名如student,必须用关键字struct和student一起来定义 ④
typedef struct { char name[12]; char sex; struct date birthday; float sc[4]; }STR; STR std ,pers[3] ,*pstd;注意此处STR是一个具体的结构体类型名,他能够唯一的标志这一种结构体类型名,因此,可以用来定义变量,如同使用int char一样,不用写关键字struct。
六、 ①给结构体变量赋值初值
struct student { char name[12]; char sex; struct date birthday; float sc[4]; }std ={“Linming”,‘m’,1962.5,10,88,76,85.5,90};//先说明结构体然后定义了一个结构体变量。②
struct bookcart { char num[5]; float money; }b[]={{"NO.1",35.5},{"No.2",25.0}};{“NO.1”,35.5}为b[0],{“No.2”,25.0}为b[1] ③
struct { char ch; int i; float x; }arr[2][3]={{{'a',1,3e10},{'a',2,4e10},{'a',3,5e10}},{{'b',1,6e10},{'b',3,8e10}};