用户自己建立数据类型

定义结构体变量

结构体变量是由有内在联系的成组出现的数据组成的组合数据

struct 结构体名{

    成员表列

}变量名表列;

eg:

struct Student{

long int num;

char name[20];

char sex;

}a,b={10101,”Li Lin”,’M’};

注意:变量名表列后面的分号,没写变量名表列也要加分号。

对某一单一成员初始化:

struct Student b={.name=”Zhang Fang”};

定义结构体数组

struct Person{

char name[20];

int count;

}leader[3]={“Li”,0,”Zhang”,0,”Sun”,0};

末尾与struct Person leader[3]= {{“Li”,0},{”Zhang”,0},{”Sun”,0}};等效

定义共用体变量

共用体变量是用同一段内存单元存放不同类型的变量。

union 共用体名{

    成员表列

}变量表列;

eg:

union Dta{

int i;

char ch;

float f;

}a,b,c;

注意:不能初始化全部成员,因为他们占用同一段存储单元。

union Data a={1,’a’,1.5};        //错误

union Data a={16};              //合法,这是默认对第一个成员初始化

union Data a={.ch=’j’};          //合法,这是指定对成员ch初始化

注意:不能对共用体变量名赋值,也能不能企图引用变量名来得到一个值,eg:

a=1;   //错误,不能对共用体变量赋值

m=a;   //错误,企图引用共用体变量名以得到一个值赋给整型变量m

b=a;   //合法,a和b是同类型的共用体变量,可以互相赋值

 

使用枚举类型

如果一个变量只有几种可能的值,则可以定义为枚举类型。

enum 枚举名{枚举元素列表};

eg: enum Weekday{sun,mon,tue,we,thu,fri,sat};

也可以不声明有名字的枚举类型,直接定义枚举变量,eg:

enum{sun,mon,tue,we,thu,fri,sat} workday,weekend;

枚举类型的枚举元素按常量处理,称为枚举常量。不要因为它们是标识符(有名字)而把它们看作变量,不能对它们赋值。eg:

sun=0;mon=1;              //错误,不能对枚举元素赋值

没一个枚举元素都代表一个整数,按定义时的顺序默认它们的值为0,1,2,3,4…。eg:在上面的定义中,sun的值自动设为0,mon为1,sat为6。

workday=mon;与workday=1;等价。

   printf(“%d”,workday);将输出整数1。

也可以指定枚举元素的数值,eg:

enum weekday{sun=7,mon=1,tue,we,thu,fri,sat}workday,weekend;

//指定枚举常量sun的值为7,mon为1,以后顺序加1,sat为6。

用typedef声明新类型名

简单地用一个新的类型名代替原有的类型名:

typedef int Integer;

//指定Integer为类型名,作用与int相同,即int i;与Integer i;等价。

命名一个新的类型名代表结构体类型:

typedef struct{

int month;

int day;

int year;

}Date;

以上声明了一个新类型名Date,代表上面的一个结构体类型,然后可以直接定义变量。eg:Date birthday;Date *p;注意不是struct Data birthday;

命名一个新的类型名代表数组类型:

typedef int Num[100];   //声明Num为整型数组类型名

Num a;                  //定义a为整型数组名,它有100个元素

命名一个新的类型名代表指针类型:

typedef char *String;   //声明String为字符指针类型

String p,s[10];         //定义p为字符指针变量,s为字符指针数组

命名一个新的类型名代表指向函数的指针类型:

typedef int (*Pointer)();

//声明Pointer为指向函数的指针类型,该函数返回整形

Pointer p1,p2;          //p1,p2为Pointer类型的指针变量

习惯上,常把typedef声明的类型名的第一个字母大写表示,与系统提供的标识符区别。

posted @ 2018-01-30 21:26  Limulus  阅读(510)  评论(0)    收藏  举报