c++ typdef指针111(111)

typdef 和define的区别。

typdef int* int_ptr;
#define int* int_ptr;

我相信一看就知道了。

数组

typdef int carry[3];//嘿嘿,不知道了吧

实际上就是申明了一个数组。用法:

carry temp;
cout << typeid(temp).name();//输出结果是int [3]; 说明temp就是个int数组的别名。

函数

typdef int (*fun)(int);//这种写法早就见过了。嘿嘿看下面的
typdef int fun(int);//是否见过?。除了,使用时必须添加&符号外。。它还有个用处,就是在声明函数的时候,可以成为一个别名,但是有个缺点是,也仅仅是声明,只是表明有这个函数类型,定义的时候,还是要老老实实还原类型进行定义;
//int* (*a[5])(int, char*) 函数指针和指针函数已经有了解,从已有了解到a是一个5大小的函数指针数组,看下面这个。
//doube(*)() (*pa)[9]; 然而并没有区别。

看一段高级用法代码:

++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
static NTSTATUS(*fcntab[])(PDEVICE_EXTENSION pdx, PIRP Irp);//静态数组指针
typedef int (*FP_CALC)(int, int);
typedef FP_CALC CAll(char);
int hehea(int a, int b) {
return a+b;
}
FP_CALC test(char f) {
if (f == 'a') {
return hehea;
}
return NULL;
}
void main() {
CAll* p = test;
p('a');
}

亮点一:返回函数指针,太棒了,以前都没用过。。
亮点二:typedef的使用可以对函数本体使用,但是使用的时候必须添加指针。

对了

要对结构体的用法,

struct mem {int a; int b; char c;} *mem_ptr;//基本完了。。。。嘿嘿!
// //