C语言允许为一个数据类型起一个新的别名,就像给人起“绰号”一样。
为结构体、共用体起别名:(替换结构体最常用)
1 2 3 4 5
| typedef struct animal { char* name; int legs; int speed; } Animal;
|
使用 typedef 命令,为 struct animal 起了一个别名 Animal 。同样关于结构体的几种定义方式也都可以使用。
1 2 3 4 5
| typedef union { short count; float weight; float volume; } quantity;
|
typedef 命令可以为 union 数据类型起别名。
为某个基本类型起别名:(其次)
习惯上,常把用typedef声明的类型名的第1个字母用大写表示,以便与系统提供的标准类型标识符相区别。
举例:
1 2 3 4
| typedef int Integer; Integer a, b; a = 1; b = 2;
|
Integer a, b;等同于int a, b;。
为指针起别名:
1 2 3
| typedef int* intptr; int a = 10; intptr x = &a;
|
intptr 是 int* 的别名。不过,使用的时候要小心,这样不容易看出来,变量 x 是一个指针类型。
为数组起别名:
1 2 3 4 5 6 7
| typedef int five_ints[5]; five_ints x = {11, 22, 33, 44, 55};
typedef int Num[100]; Num a;
|
- 上例中, five_ints 是一个数组类型。我们把原有的
int [5]看做是数组的类型。
- 举例:指针数组
1
| typedef int *PTR_TO_ARR[4];
|
- 表示 PTR_TO_ARR 是类型
int * [4]的别名,它是一个二维数组指针类型。接着可以使用 PTR_TO_ARR 定义二维数组指针:
为函数起别名:
- typedef 为函数起别名的写法如下:
1
| typedef signed char (*fp)(void);
|
- 类型别名 fp 是一个指针,代表函数 signed char (*)(void) 。
- 举例:
1 2
| typedef int (*PTR_TO_FUNC)(int, int); PTR_TO_FUNC pfunc;
|
参考链接: