typedef的作用分为三种:
1.为基本数据类型定义新的类型名
typedef int myINT;//将基本的数据类型定义为新的类型名myint
2.为自定义数据类型(结构体,共用体,枚举类型)定义简洁类型名
typedef struct Point3d{float x;float y;float z;}Point3d;
//将原本类型名为struct Point3d简化为类型名Point3d
//下面对结构体类型使用typedef关键字:typedef struct Node{int data;struct Node* next;}Node; //Node是对struct Node的重命名Node new_node;//定义结构体变量,相当于struct Node new_node;
枚举类型 ,enum 语句示例实际上并没有创建任何变量,只是定义数据类型
enum 枚举名
{
//枚举成员用逗号隔开
};
(1)以上定义的enum Day,enum Sex,enum Color都是枚举类型。
(2)花括号{}中的内容是枚举类型的可能取值,也叫枚举常量,这些枚举常量默认从0开始依次递增1,枚举常量默认从0开始,也可以在定义时赋初值。
(3)定义的枚举变量的赋值必须从枚举常量中取值,提高代码的可读性。
#include<iostream>
using namespace std;
enum day//枚举类型enum day的定义
{monday,tuesday,wensday,thursday,friday,saturady,sunday,
};
//enum Colors { red, orange, yellow = 9, green, blue };
typedef enum Colors { red, orange, yellow = 9, green, blue }color;//将原来的类型名enum Colors简化为color
int main()
{enum day day1;//定于一个enum day 类型的变量day1day1 = monday; //对day1进行赋值,赋值的内容必须为枚举类型里面的内容cout << day1 << endl;//0color col1;//采取简化的类型名colorcout << orange << endl;//1cout << green << endl;//10cout << blue << endl;//11
}
- typedef void(*T)(void *)
对于typedef void(*T)(void *),我们进行一层层的剖析
首先写成 void(*T)() 可以看出 T是一个指针,是一个指向返回值为void ,参数为空的类型的函数指针
再加上(void *) 为 void(*T)(void *) 就变成了一个指向 返回值为void,参数为void *类型的指针
在加上typedef ,加上后,T就不再是一个函数指针了,它代表着一种类型,这种类型可以定义一个 指向 返回值为void,参数为void *类型的指针