typedef,顾名思义,为“类型定义”,可以解释为:将一种数据类型定义为某一个标识符,在程序中使用该标识符来实现相应数据类型变量的定义。
功能:用自定义名字为已有数据类型命名。
类型定义简单形式:typedef type name;
typedef定义类型步骤
1.按定义变量方法先写出定义体,如 int i;
2.将变量名换成新类型名,如 int INTEGER;
3.最前面加typedef 如 typedef int INTEGER;
4.用新类型名定义变量,如 INTEGER i,j;
典型用法:
定义结构体类型:
typedef struct {int x; int y;} Point;
需要说明的是,我们还可以使用下面的方法来定义结构体变量:
struct t_Point {
int x; int y;}; // 注意,这里最后一个分号不能省略
int main(int argc, char* argv[])
{
struct t_Point a, b;
// . . .
return 0;
}
显然,这种方法没有typedef更加直观(在C++中,main函数第一行的struct关键字可以省略,但在标准C中,省略该关键字会出现编译错误)。
此外,对于定义链接队列中的结点,我们可以这样实现:
typedef struct t_node {
int Value;
struct t_node *next;
} Node;
当然也可以这样定义:
typedef strcut t_node Node;
struct t_node {
int Value;
Node *next;
};
定义数组类型
typedef int MyIntArray [100];
那么程序中的
MyIntArray ia;
就相当于
int ia[100];
定义函数指针
typedef void (*FUNCADDR)(int)
此处FUNCADDR是指向这样一个函数的指针,该函数的返回值为void类型,函数有一个int型的参数。
例如:
void print (int x)
{
printf (“%d\n”, x);
}
int main (int argc, char *argv[])
{
FUNCADDR pFunc;
pFunc = print; // 将指针指向print函数
(*pFunc)(25); // 调用函数print
return 0;
}
函数指针一般用于回调函数、中断处理过程的声明,以及在面向对象程序设计中对事件处理过程的声明。
定义类类型
typedef class {
private:
int a;
public:
int b;
} MyClass;
typedef 与 #define的区别
typedef int COUNT
#define COUNT int