typedef
-
什么是typedef,它有什么作用
- typedef可以给一个已知的数据类型其别名(外号)
-
利用typedef给数据类型起别名的格式:
- typedef 原有的数据类型 别名(外号);
-
注意:
- typedef不仅能给系统原有的数据类型起别名,也可以给一个自定义的数据类型起别名
- 利用typedef给数据类型起别名,并不会生成一个新的数据类型,仅仅是给原有的类型起一个别名而已
给基本数据类型起别名
typedef int Integer;// 给系统的数据类型起别名
typedef Integer myInt;// 给自定定义的数据类型起别名
Integer num = 10;
myInt num1 = 20;
给结构体类型起别名
// 先定义结构体,再给类型起别名
struct Person
{
int age;
char *name;
};
typedef struct Person SPerson;
// 定义结构体类型的同时给结构体类型起别名
typedef struct Person
{
int age;
char *name;
} SPerson;
// 定义结构体类型的同时给结构体类型起别名,并且省略掉原有类型的名称
typedef struct
{
int age;
char *name;
} SPerson;
给枚举类型起别名
// 先定义枚举类型,再给枚举类型起别名
enum Gender
{
kGenderMale,
kGenderFemale
};
typedef enum Gender SEX;
// 定义枚举类型的同时给枚举类型起别名
typedef enum Gender
{
kGenderMale,
kGenderFemale
} SEX;
// 定义枚举类型的同时给枚举类型取别名,并且省略枚举原有类型名称
typedef enum
{
kGenderMale,
kGenderFemale
} SEX;
给指针类型取别名
typedef char * String;
// 注意:如果给指针区别名之后,那么以后利用别名定义变量就不要加*
String name = "lml";
给函数指针取别名
// 函数
int sum(int v1, int v2)
{
return v1 + v2;
}
// 注意:如果是给指向函数的指针起别名,那么指向函数的指针的指针名称就是它的别名
// functionP == int(*functionP)(int, int)
typedef int(*functionP)(int, int);
// 使用
functionPotinter sumP = sum;