1. 程式人生 > >函式指標做為引數的例子

函式指標做為引數的例子

1

2

#include <iostream>

using namespace std;

void f1(){std::cout<<"---f1---"<<endl;}
void f2(){std::cout<<"---f2---"<<endl;}
void f3(){std::cout<<"---f3---"<<endl;}

typedef void (*Menu)();
int main()
{
	
	Menu a[]={f1,f2,f3};
	for(int i=1;i;)
	{
		std::cout<<"1----display f1"<<endl;
		std::cout<<"2----display f1"<<endl;
		std::cout<<"3----display f1"<<endl;
		std::cout<<"Enter your chioce:"<<endl;
		cin >> i;
		switch (i)
		{
			case 1:a[0]();break;
			case 2:a[1]();break;
			case 3:a[2]();break;
			case 0:return 0;
			default :std::cout<<"you entered a wrong key.\n";
		}
	
	}
	return 0;
}


#include <iostream>

using namespace std;

typedef void (*FuncPtr)(void);

void fn()
{
	cout << "void fn()" << endl;
}



int main()
{
	cout << "第一種定義形式" << endl;
	void (*p)();  //定義函式指標,不是宣告 
	p = fn;       //初始化 ,,初始化時注意函式引數和返回值型別要一致 
	p();
	
	cout << "第二種定義形式" << endl;
	void (*pt)() = fn;//定義函式指標,並且初始化, 初始化時注意函式引數和返回值型別要一致 
	pt(); 
	
	cout << "第三種定義形式" << endl;
	FuncPtr fp = fn;   //定義返回值和引數都為空的函式指標,並初始化 ,,初始化時注意函式引數和返回值型別要一致  
	fp();
	
	return 0;
}