函数指针数组作为函数参数

函数指针数组,作为函数的参数

/* 函数指针数组,作为函数参数 */

#include 
//函数
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;
}

你可能感兴趣的:(C++,C,c++)