background image

下面是三个变量的声明,我想使用 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];