函数指针
概念:函数指针指的就是指向函数的指针。
定义:void (*F)(); 此处就是表示函数指针F指向一个形参为空,返回值为void的函数。理解为一个指针变量,类似于int* p量,注意它不是一个函数声明,所以没有函数体的。
应用:定义前加个typedef void (*F)() 表示F是个类型了,void f(); F=f;或者F=&f;结论就是直接函数名相当于在其取个地址符。
另外:定义前加个typedef void (*F)() 表示F是个类型了,那么F类型就类似于 typedef Intp *int; 将类型取名;此处可以理解为 typedef F void(*)();。
函数若是通过typedef则其实不在是个函数,而是一个函数变量。例如typedef int func(int*,int);可以理解为 typedef func int (int*,int),表示func是个函数变量,其实质也就是指针函数所指函数的类型。也就是函数类型的意思。我们知道对于函数形参则可以利用函数名,因为函数名可以转为函数指针;而不能用于返回类型,因为函数返回的函数指针的话,那么是不能有函数类型转为函数指针类型的。
-----------
函数指针对于高级语言而言,它被内封了,比如对于C#它就没有指针了,那么如何制定方法呢?那么是通过所谓的句柄类指定,使用委托,其实质委托就是利用函数指针内部实现。