关闭

函数指针作为函数参数

257人阅读 评论(0) 收藏 举报
分类:
#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;
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:20319次
    • 积分:700
    • 等级:
    • 排名:千里之外
    • 原创:52篇
    • 转载:3篇
    • 译文:0篇
    • 评论:0条
    文章存档