#include <iostream>
using namespace std;
void square(int &x,int &y)
{
x=x*x;
y=y*y;
}
void cube(int &x,int &y)
{
x=x*x*x;
y=y*y*y;
}
void Swap(int &x,int &y)
{
int z;
z=x;
x=y;
y=z;
}
void print(void(*p)(int &x,int &y),int &x,int &y) //该函数有3个参数,第1个是一个函数指针p,它指向的函数带有两个参数,并返回一个void值,另外还有两个int型引用x和y
{
cout<<"执行函数前\n";
cout<<"x:"<<x<<"\t"<<"y:"<<y<<endl;
p(x,y);
cout<<"执行函数后\n";
cout<<"x:"<<x<<"\t"<<"y:"<<y<<endl;
}
int main()
{
int a=2,b=3;
char choice;
bool quit=false;
void (*p)(int &,int &);
//声明的p为一个函数指针,它所指向的函数带有两个参数并返回 一个void值
while(quit==false)
{
cout<<"(0)退出(1)平方(2)立方(3)交换参数:";
cin>>choice;
switch(choice)
{
case '0':quit=true;
case '1':p=square;break; //输入1,将函数名square的地址赋给p
case '2':p=cube;break; //输入2,将函数名cube的地址赋给p
case '3':p=Swap;break; //输入3,将函数名Swap的地址赋给p
default:p=0;break;
}
if(quit==true)break;
if(p==0)
{
cout<<"请输入0到3之间的数字\n";
continue;
}
print(p,a,b); //调用将函数指针作为参数的函数print
}
return 0;
}
using namespace std;
void square(int &x,int &y)
{
x=x*x;
y=y*y;
}
void cube(int &x,int &y)
{
x=x*x*x;
y=y*y*y;
}
void Swap(int &x,int &y)
{
int z;
z=x;
x=y;
y=z;
}
void print(void(*p)(int &x,int &y),int &x,int &y) //该函数有3个参数,第1个是一个函数指针p,它指向的函数带有两个参数,并返回一个void值,另外还有两个int型引用x和y
{
cout<<"执行函数前\n";
cout<<"x:"<<x<<"\t"<<"y:"<<y<<endl;
p(x,y);
cout<<"执行函数后\n";
cout<<"x:"<<x<<"\t"<<"y:"<<y<<endl;
}
int main()
{
int a=2,b=3;
char choice;
bool quit=false;
void (*p)(int &,int &);
//声明的p为一个函数指针,它所指向的函数带有两个参数并返回 一个void值
while(quit==false)
{
cout<<"(0)退出(1)平方(2)立方(3)交换参数:";
cin>>choice;
switch(choice)
{
case '0':quit=true;
case '1':p=square;break; //输入1,将函数名square的地址赋给p
case '2':p=cube;break; //输入2,将函数名cube的地址赋给p
case '3':p=Swap;break; //输入3,将函数名Swap的地址赋给p
default:p=0;break;
}
if(quit==true)break;
if(p==0)
{
cout<<"请输入0到3之间的数字\n";
continue;
}
print(p,a,b); //调用将函数指针作为参数的函数print
}
return 0;
}