Typedef

c语言中此关键字用来定义自己习惯的数据类型名称,可以替换系统默认的类型名称、结构体、共用体、枚举类型等。

用法

1、为基本数据类型定义类型名

typedef unsigned int COUNT;

使用COUNT替换unsigned int

2、为自定义的数据类型(结构体、公用体、枚举类型)定义简洁的类型名称

struct Point
{
    double x;
    double y;
    double z;
};
此结构体使用的时候,需用如下方式调用
struct Point oPoint1={100,100,0};
struct Point oPoint2;
可使用typedef关键字定义新的名称
typedef struct tagPoint
{
    double x;
    double y;
    double z;
} Point;

这个Point就是这个结构体的别名。

3、为数组定义简洁的类型名称

typedef int vector[10];

语句定义了一个元素类型为int,含有10个元素的数组类型vector,若不使用typedef保留字,则就变成了数组定义,它只定义了一个元素类型为int、含有10个元素的数组vector。这两种定义有着本质的区别,若定义的是数组vector,系统将为它分配有保存10个整数的存储单元,共40个字节的存储空间;若定义的是数组类型vector,系统只是把该类型的有关信息登记下来,待以后利用该类型定义对象时使用,具体地说,就是把vector的元素类型int,类型长度10,类型名vectoe等登记下来,待以后定义vector类型的对象时使用。

可以按如下方法使用

vector v1,v2;

这条语句定义了vector类型的两个对象v1和v2,每个对象都是vector类型的一个数组,每个数组由10个整型元素所组成。

4、为指针定义简洁的名称

  1. typedef char* PCHAR;
  2. PCHAR pa;

 对于上面这种简单的变量声明,使用 typedef 来定义一个新的别名或许会感觉意义不大,但在比较复杂的变量声明中,typedef 的优势马上就体现出来了,如下面的示例代码所示:

  // PFun是我们创建的一个类型别名

  typedef int *(*PFun)(int,char*);

  // 使用定义的新类型来声明对象,等价于int*(*a[5])(int,char*)

  PFun a[5];

综上所述:typedef就是用来定义别名的,和define存替换有很大差别,typedef定义的别名在编写代码时就会报错。

posted @ 2019-03-30 23:37  geekj  阅读(416)  评论(0编辑  收藏  举报