typedef 函数指针
参考博客:http://c.biancheng.net/view/298.html
样例:
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
typedef void(*p)(int, int);
void f(int a, int b)
{
cout<<a+b<<endl;
}
int main()
{
cout<<"hello"<<endl;
int a=12, b=15;
p ff=f;
ff(a, b);
return 0;
}
typedef 是用来定义某种类型的别名的。
一般定义简单类型别名的方式是
typedef <目标类型> <源类型>
但是函数指针的声明方式与其他指针不同
其他类型的指针的定义是:
<类型> *p;
而函数指针的定义是:
<返回类型>(*p)(<变量类型>,...)
没有办法写成
<返回类型>(<变量类型>,...) *p;
所以在用typedef 定义类型时就不再是
typedef <目标类型> <源类型>
而是
typedef <返回类型>(*目标类型)(<变量类型>,...)
被定义的新类型在中间,看起来就和其他类别别名的定义不一样。
特别是有人非得在返回类型后加个空格,看起来就更奇怪了,例如:
typedef void (*p)(int, int);
看起来就好像是要把 (*p)(int, int) 定义为 void 一样。但其实是个函数指针。