一.typedef作用简介
1.我们可以使用typedef关键字为各种数据类型定义一个新名字(别名)。
2.使用场合
(1)基本数据类型
(2)指针
(3)结构体
(4)枚举
(5)指向函数的指针
3.格式:typedef 数据类型 别名;(我们就可以用别名定义这种类型的变量:别名 变量==类型 变量)
4.原来的也可以用,只是用别名比较简单明了。还可以在别名的基础上再起一个别名:typedef 别名1 别名2
二.typedef与指针
1.除开可以给基本数据类型起别名,typedef也可以给指针起别名。
2.格式:typedef 类型 * 别名(以后定义指针变量就可以直接:别名 指针变量)
三.typedef与结构体
1.使用typedef给结构体起别名:
struct 结构体名{
类型1 成员变量1;
类型2 成员变量2;
....
};
typedef struct 结构体名 别名;
以后就可以用这样定义结构体变量:别名 结构体变量;
2.简写方法
typedef struct 结构体名{
类型1 成员变量1;
类型2 成员变量2;
....
}别名;
还可以省略结构体名称(以后最常用的写法):
typedef struct {
类型1 成员变量1;
类型2 成员变量2;
....
}别名;
三.typedef与指向结构体的指针
typedef struct {
类型1 成员变量1;
类型2 成员变量2;
....
}别名1; //定义一个结构体,顺便起个别名
typedef 别名1 * 别名2 // 给结构体变量起别名
四.typedef 与枚举类型
1.定义完枚举类型,再给枚举类型起别名
enum 枚举名{枚举元素1,枚举元素2...};
typedef enum 枚举名 别名;
用别名定义枚举变量:别名 枚举变量;
2.定义枚举时候顺便起别名
typedef enum 枚举名{枚举元素1,枚举元素2...} 别名;
3.省略枚举名,起别名
typedef enum {枚举元素1,枚举元素2...} 别名;
五.typedef与指向函数的指针
1.指向函数指针的定义:返回值类型 (*指针名) (参数类型1,参数类型2...);
2.用typedef给指向函数的指针起别名
typedef 返回值类型 (*别名)(参数类型1,参数类型2);
别名 指向函数的指针的变量;
六.typedef与#define
1.顺序有区别:(typedef 类型名 别名)而(#define 别名 类型名)
2.给指针变量起别名:用typedef的时候同时定义多个指针变量是没有问题的,而用#define的时候只有第一个变量是
指针变量,其它都是非指针数据类型(指针变量指向空间的类型)。期类型起别名最好用typedef
(1)用typedef的时候
typedef char * string;
string str1,str2; // 这句就等价于char *str1;char *str2;
(2)用#define的时候
#define string char *
string str1,str2; // 这句等价于char *str1;char str2;