C++ typedef关键字

来源:互联网 发布:java开发app 编辑:程序博客网 时间:2024/04/25 08:26

关键字:typedef

功能:为现有的类型名创建一个新的,容易记住的名字,并隐藏原有的笨拙的语法结构,增加美观;

使用目的:A、给变量一个容易记且有意义的新名字;

                    B、简化一些复杂的类型声明;

使用格式:typedef  exist_type  new_type_name

 

1int/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 aastruct A aa ;是一个意思

5、注意

    A-typedef 并不创建新的类型;

    B-仅仅为现有类型添加一个同义字

    C-typedef并不创建新的类型,typedef在编译时被解释

 








0 0