Monday, May 26, 2008

[C++语法] 关键字typedef用法(转) [C++语法] 关键字typedef用法(转)

  • 定义结构体类型
typedef struct {
int x;
int y;
} point;

point var_1; // 定义了变量var_1
point array_1 [10]; // 定义了数组array_1

struct {
point part1;
int part2;
} cplx; // 定义了复杂类型变量cplx

需要说明的是,我们还可以使用下面的方法来定义结构体变量:
对于定义链接队列中的结点,我们可以这样实现:

typedef struct t_node {
int Value;
struct t_node *next;
} Node;

当然也可以这样定义:

typedef strcut t_node Node;
struct t_node {
int Value;
Node *next;
};

  • 定义数组类型
与定义结构体类型相似,可以使用typedef来定义数组类型,例如:

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对其进行定义:

typedef class {
private:
int a;
public:
int b;
} MyClass;

其实这和定义结构体类型非常相似,不过很少有人这么使用。

No comments: