一、结构 a)、结构定义 一般形式: Struct 结构名 { 类型名 成员名; }; Ex: Struct student { Int number; Char name[10]; Char sex; Int age; Char address[50]; Float score[3]; }; b)、结构变量的定义 1、先定义结构类型,再定义该类型数据。 Ex: Struct 结构名 { 结构成员表 }; Struct 结构名 变量名列表; 2、在定义结构类型的时候,同时定义若干个此类型的变量。 Ex: Struct 结构名 { 结构成员表 } 变量表; 3、不定义结构类型标识符(结构名),直接定义结构变量。 Ex: Struct { 结构成员表 } 变量表; c)、结构类型变量成员的引用 引用结构变量x的成员有以下3种方法(p为结构指针变量,指向x): 1、x.成员名 2、(*p).成员名 3、p->成员名 d)、Attention 1、结构类型定义只是指定了一种类型,与int、float、char地位相同,无具 体 数据,系统不分配内存 2、结构成员可以是任何基本数据类型,也可以是指针等。 3、结构类型可以嵌套定义,但不能递归定义,即允许一个或多个成员类型 定 义为其他结构类型。 Ex: Struct student { Int number; Char name[10]; Struct data birthday; //birthday成员的类型为结构 data 类型 } 二、枚举 a)、对枚举元素按常量处理,不能对它们赋值。(注意区分枚举元素和枚举变 量) Ex: Enum weekday{sum ,mon, tue, wed, thu, fri, sat}; Sum=0; //sum是枚举元素,算常量,不能被赋值 b)、枚举变量具有默认值,它们依次为:0,1,2,3,。。。例如上例中sum的值 为0、mon为1. c)、也可以在声明的时候另行定义枚举元素的值 Ex: Enum weekday{sum=7 ,mon=1, tue, wed, thu, fri, sat}; d)、整数值不能直接赋给枚举变量;如需将整数赋值给枚举变量,应进行强 制类型转换。 Ex: Weekday day; Day=(weekday)1; e)、枚举变量的取值范围只能是枚举元素 三、typedef声明 语法形式: typedef 已有类型名 新类型名表; 其中,新类型名表可以有多个标识符,他们之间以逗号隔开。 Ex: Typedef double area, volume; Typedef int natural; Natural i1, i2; Area a; Volume v; 四、宏定义 a)、"\"与一个较长占多行的宏 宏定义中允许包含两行以上命令的情形,此时必须在最右边加上"\"且该行"\"后不能再有任何字符,连注释部分都不能有,下面的每行最后的一定要是"\","\"后面加一个空格都会报错,更不能跟注释。 Ex: #define exchange(a,b) {\ int t;\ t=a;\ a=b;\ b=t;\ }
|