第十七章 特殊成员_函数指针数组
//6 函数指针数组 #include <iostream> using namespace std; //既然我们可以声明一个指向变量或者对像的指针数组,为什么就不能声明一个指向函数的指针数组呢? void (*p[5])(int&, int&); //它的意思是声明了一个有5个元素的数组指针,该数组指针所指的函数必须有两个int参数 //而且要返回void的值,也就是空值,它与函数指针的区别只是指针数量的不同,函数指针只可以存储一个函数的地址,而函数指针数组可以存储任意个函数 //计算平方 void square(float&x, float&y){x=x*x; y=y*y; } //计算立方 void cube(float&x, float&y){x=x*x*x; y=y*y*y; } void print(float &x, float&y) { cout<<"长的值:"<<x<<" 宽的值:"<<y<<endl; } void Swap(float &x, float &y) { float n; n=x; x=y; y=n; } int main() { float a=2, b=3; char choice='0'; int i; void (*p[4])(float&,float&); for(i=0; i<4; i++) { cout<<"(0)退出 (1)平方 (2)立方 (3)交换x和y的值"<<endl; bool quit = false; cin>>choice; switch(choice) { case '0':quit=true;break; case '1':p[i] = square;break; case '2':p[i] = cube;break; case '3':p[i] = Swap;break; default:p[i] = 0;break; } if(quit) break; if(p[i] == 0) { cout<<"请输入一个从0到3之间的数字"<<endl; i=i-1; continue; } cout<<"第"<<i+1<<"次执行,到第5次结束"<<endl; cout<<"初始值"<<endl; print(a,b); cout<<"现在调用函数指针数据p["<<i<<"]所指向的函数...."<<endl; p[i](a,b); cout<<"运行后"<<endl; print(a,b); } return 0; }