函数指针数组,作为函数的参数
/* 函数指针数组,作为函数参数 */
#include <iostream>
//函数
void f1(void){
std::cout << "void f1(void)\n";
}
void f2(void){
std::cout << "void f2(void)\n";
}
void f3(void){
std::cout << "void f3(void)\n";
}
//函数指针数组
void ( *arr1[3] )(void) = { f1, f2, f3 }; //函数指针数组
typedef void ( *pfunc )(void); //using pfunc = void(*)( ); // c++11
pfunc arr2[3] = { f1, f2, f3 };
//尽管a从概念上说是个数组,但实际上是一个指针,这解释了a的声明中的两个*
void test(void (**a)(void), int size )
{
int n = size;
while( --n >= 0 )
{
void (*p)(void ) = *a++;
if( p ){
(*p)( );
}
}
}
int main()
{
test( arr1, 3 );
//test( arr2, 3 );
return 0;
}