typedef为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。
例如:typedef int DataType;
此声明定义了一个 int 的同义字,名字为 DataType。注意 typedef 并不创建新的类型。它仅仅为现有类型添加一个同义字。你可以在任何需要 int 的上下文中使用 DataType.
1、typedef在数组中的应用
|
/* N1到N4是几个常量,以枚举的形式定义 */ enum {N1 = 2, N2 = 3, N3 = 4, N4 = 5};
/* 将DataType定义为int型,便于扩充 */ typedef int DataType;
/* 定义一个一维数组,数组的元素维整型值 */ typedef DataType ARR1[N4];
/* 再定义一个一维数组,数组的元素维ARR1型,不过ARR1又是一个数组,所以ARR2 实际上是一个矩阵*/ typedef ARR1 ARR2[N3]; /* 此处完全等价为typedef int ARR2[N3][N4];*/
/* 按照ARR2的解释,ARR3也是一个一维数组,不过数组元素的类型是ARR2的类型所有ARR3是一个三维数组*/ typedef ARR2 ARR3[N2]; /* 此处完全等价为typedef int ARR3[N2][N3][N4];*/
/* 分别用定义好的ARR1,ARR2,ARR3定义三个变量a, b, c */ ARR1 a; /* 此处完全等价于:int a[N4]; */ ARR2 b; /* 此处完全等价于:int b[N3][N4]; */ ARR3 c; /* 此处完全等价于:int c[N2][N3][N4]; */
|
2、typedef在结构中的应用
|
#include <iostream> using namespace std; /* 定义了一个名为point的结构体,而newpoint是它的一个别名 */ typedef struct /*point*/ { double x, y; }newpoint;
int main() { //point point1 = {100, 200}; newpoint point2 = {500, 1000}; //cout<<point1.x<<" "<<point1.y<<endl; cout<<point2.x<<" "<<point2.y<<endl; return 0; }
|
3、typedef在函数指针中的应用
|
/* 定义了一个名为Fun的函数指针,其函数类型为int (*)(int, int) */ typedef int (*Fun)(int, int); Fun func;//等价于int (*func)(int, int);
//===============================================
/* 上述代码也可以这样定义 */ typedef int Fun(int, int); Fun* func;
|
|
|