关键字:typedef
功能:为现有的类型名创建一个新的,容易记住的名字,并隐藏原有的笨拙的语法结构,增加美观;
使用目的:A、给变量一个容易记且有意义的新名字;
B、简化一些复杂的类型声明;
使用格式:typedef exist_type new_type_name
1、int/double/char等常见定义
格式:typedef int name_int; 声明中定义了int的同义词name_int,可以在任何使用int的地方用name_int;
typedef unsigned char name_char; 声明中定义了unsigned char的同义词name_char,可以在任何使用int的地方用name_char;
2、数组/指针
格式:typedef int name[128]; 使用typedef定义后,可直接使用name代替int name[128] ;
typedef char* pstr; 使用typedef定义后,可直接使用pstr代替char* pstr;
eg: typedef char* pstr;
pstr str = "abcde";
char mystrcmp(pstr, pstr);
3、函数
若有 void print_name(int);
定义一个函数指针,使其指向print_name并调用;
void (*fun_name)(int); //声明一个函数指针,调用参数是int型,变量名是fun_name
fun_name = &print_name;
以上便是声明一个函数指针,并使其指向print_name函数,然而其比较复杂,简化的声明如下:
typedef void (*PrintHelloHandle)(int);
使用代码如下:
PrintHelloHandle fun_name;
fun_name = &printHello; (*pFunc)(110);
以后其他地方的程序需要声明类似的函数指针,只需要下面代码:
PrintHelloHandle pFuncOther;
这样,代码就变得更加简洁易懂。
4、结构体
typedef struct A //这里的A可以省略!形成一个匿名结构体 A是结构体名
{
int a;
int b;
}B;
因为前面有typedef命令,所以B不是变量,而是一个新的数据类型,相当于struct A
可以用B来定义变量,如:
B aa 与struct A aa ; 是一个意思
5、注意
A-typedef 并不创建新的类型;
B-仅仅为现有类型添加一个同义字
C-typedef并不创建新的类型,typedef 在编译时被解释