结构体 1、一般形式 Siruct<结构体名> {<成员列表>}; 2、变量说明 (1)先定义结构体类型,再说明结构体变量 一般形式为: Struct 结构体名 变量名列表; 例: /*定义结构体类型*/ struct student { long num; char name[20]; char sex; float score; } /*说明结构体变量*/ struct student student1,student2; (2)在定义结构体的同时定义结构体变量 一般形式为: struct 结构体名 { 成员表列; } 变量表列; 例: struct student { long num; char name[20]; char sex; float score; }student1,student2; (3)利用无名结构体说明结构体变量 一般形式为: struct { 成员表列; }变量名表列; struct {long num; char name; char sex; float score; }student1,student2; (4)利用重命名类型(typedef)说明结构体 一般形式为: typedef 已定义的类型标识符 新标识符; 作用:利用新标识符代替原来已定义的类型标识符 例: typedef int integer; typedef float real; 分别用 integer和real代替系统中已存在的int和float类型,就可以用他们说明新的变量。 例: integer a,b; real c,d; 下面用typedef说明结构体 先定义新类型名: Typedef struct { Long num; Char name[20]; Char sex; Float score; }stud; 说明新的结构体变量: STUD STUDENT1,STUDENT2; 注意点: Typedef 不是创建新类型而只是为标识符取一个别名。 结构体的引用和初始化 引用结构体的常用方式是利用“.”(成员分量)运算符,一般形式为: <结构体变量名>.<成员名> 例: Strcpy(studet1.name,“Liping”)/*不能用student1.name=“Liping“;* / Student1.sex=‘M’; Student1.score=91.5; 第一种初始化: struct student { long num; char name[20]; char sex; float score; }; struct student student1={2003001,“Liping”,‘M’,91.35}; 第二种初始化: struct student { long num; char name[20]; char sex; float score; } student1={2003001,“Liping”,‘M’,91.35}; 第三种初始化: struct student { long num; char name[20]; char sex; float score; } student1={2003001,“Liping”,‘M’,91.35}; 第四种初始化: struct student { long num; char name[20]; char sex; float score; }STUD; STUD student1={2003001,“Liping”,‘M’,91.35}; 结构体数组 P.178 结构体与函数 一般形式: <结构体类型名><函数名>(<形式参数表>) { 函数体 } 结构体指针 指向结构体变量的指针的一般形式: <结构体类型名> *<指针变量名>; 注意: 1、成员运算符(.)的优先级比(*)的优先级高 2、使用“-”和“>”的复合形式“->”作为指向结构体成员的运算符. 例:p->num代替(*p).num P_>name代替(*p).name 链表: 1、分配内存空间函数malloc 函数原形: void*malloc (unsigned int size); 调用形式:(<类型说明符>*)malloc (size) 2、释放内存空间的函数free 函数原形:void free(void *block); 调用形式:free(p); 注意: 使用这两个函数时要引用两个头文件“stdio.h”和“alloc.h” |
|