下面是三个变量的声明,我想使用 typdef 分别给它们定义一个别名,请问该如何做?
>1:int *(*a[5])(int, char*); >2:void (*b[10]) (void (*)()); >3. doube(*)() (*pa)[9]; 答案与分
析:
对复杂变量建立一个类型别名的方法很简单,你只要在传统的变量声明表达式里用类型
名替代变量名,然后把关键字 typedef
加在该语句的开头就行了。 >1:int *(*a[5])(int,
char*);
//pFun
是我们建的一个类型别名 typedef int *(*pFun)(int, char*);
//使用定义的新类型来声明对象,等价于 int* (*a[5])(int, char*); pFun a[5];
>2:void (*b[10]) (void (*)());
//
首先为上面表达式蓝色部分声明一个新类型
typedef void (*pFunParam)(); //
整体声明一个新类型
typedef void (*pFun)(pFunParam);
//使用定义的新类型来声明对象,等价于 void (*b[10]) (void (*)()); pFun b[10];
>3. doube(*)() (*pa)[9];
//
首先为上面表达式蓝色部分声明一个新类型 typedef double(*pFun)(); //整体声明一个新
类型
typedef pFun (*pFunParam)[9];
//使用定义的新类型来声明对象,等价于 doube(*)() (*pa)[9]; pFunParam pa;
Typedef 声明有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法。不管怎样,
使用 typedef
能为代码带来意想不到的好处,通过本文你可以学习用 typedef 避免缺欠,
从而使代码更健壮。
typedef
声明,简称 typedef
,为现有类型创建一个新的名字。比如人们常常使用 typedef
来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台
相关的数据类型,从而增强可移植性和以及未来的可维护性。本文下面将竭尽全力来揭
示 typedef
强大功能以及如何避免一些常见的陷阱。
如何创建平台无关的数据类型,隐藏笨拙且难以理解的语法?
使用 typedefs
为现有类型创建同义字。 定义易于记忆的类型名
typedef 使用最多的地方是创建易于记忆的类型名,用它来归档程序员的意图。类型出现
在所声明的变量名字中,位于 ''typedef''
关键字右边。例如:
typedef int size;
此声明定义了一个 int
的同义字,名字为 size
。注意 typedef 并不创建新的类型。它仅仅
为现有类型添加一个同义字。你可以在任何需要 int
的上下文中使用 size
: void
measure(size * psz); size array[4];
size len = file.getlength();
std::vector <size> vs;
typedef
还可以掩饰符合类型,如指针和数组。例如,你不用象下面这样重复定义有 81
个字符元素的数组: char line[81];
char text[81];
定义一个 typedef
,每当要用到相同类型和大小的数组时,可以这样: typedef char
Line[81];