函数指针形参

简介: 编写函数的声明,令其接受两个int形参并且返回类型也是int;然后声明一个vector对象,令其元素是指向该函数的指针。编写4个函数,分别对两个int值执行加、减、乘除运算。 #include #include #include using namespace std; int p...

编写函数的声明,令其接受两个int形参并且返回类型也是int;然后声明一个vector对象,令其元素是指向该函数的指针。编写4个函数,分别对两个int值执行加、减、乘除运算。

#include<iostream>
#include<string>
#include<vector>
using namespace std;

int plus1(int x,int y)
{
    return x+y;
}
int sub(int x ,int y)
{
    return x-y;
}
int multi(int x,int y)
{
    return x*y;
}
int div(int x,int y)
{
    if(y!=0)
        return x/y;
    else
        return x;
}
int use(int x,int y,int (*pf)(int ,int ))
{
    return (*pf)(x,y);
}
int main()
{
    vector<decltype(plus1)*> vec{plus1,sub,multi,div};
    int num1=use(1,2,vec[0]);
    int num2=use(1,2,vec[1]);
    int num3=use(2,1,vec[2]);
    int num4=use(2,1,vec[3]);
    cout<<num1<<endl;
    cout<<num2<<endl;
    cout<<num3<<endl;
    cout<<num4<<endl;
    return 0;
}

或者

#include<iostream>
#include<string>
#include<vector>
using namespace std;

int plus1(int x,int y)
{
    return x+y;
}
int sub(int x ,int y)
{
    return x-y;
}
int multi(int x,int y)
{
    return x*y;
}
int div(int x,int y)
{
    if(y!=0)
        return x/y;
    else
        return x;
}
int use(int x,int y,int (*pf)(int ,int ))
{
    return (*pf)(x,y);
}
int main()
{
    typedef int (*pf)(int ,int );
    vector<pf> vec{plus1,sub,multi,div};
    int num1=use(1,2,vec[0]);
    int num2=use(1,2,vec[1]);
    int num3=use(2,1,vec[2]);
    int num4=use(2,1,vec[3]);
    cout<<num1<<endl;
    cout<<num2<<endl;
    cout<<num3<<endl;
    cout<<num4<<endl;
    return 0;
}

运行结果如下:

相关文章
|
安全 编译器 C语言
深入了解C++:形参、内联、重载、引用、const和指针、new和delete
深入了解C++:形参、内联、重载、引用、const和指针、new和delete
275 1
|
存储 C语言
指针数组作为main函数的形参
指针数组作为main函数的形参
408 0
|
存储 C语言
指针数组作为main函数的形参
指针数组作为main函数的形参
358 0
|
存储 Shell C语言
指针数组组main函数的形参
指针数组组main函数的形参
204 0
|
存储 程序员 C语言
18.C语言:指针数组作main函数的形参示例
18.C语言:指针数组作main函数的形参示例
286 0
|
存储
指针数组做main函数的形参
指针数组做main函数的形参
181 0
|
C语言
C语言中形参列表为指针的三种不同swap函数的通俗理解
C语言中形参列表为指针的三种不同swap函数的通俗理解
445 0
关于LeetCode题目中形参《 int* nums,int** nums》可以接收什么值?《指针问题》
关于LeetCode题目中形参《 int* nums,int** nums》可以接收什么值?《指针问题》
关于LeetCode题目中形参《 int* nums,int** nums》可以接收什么值?《指针问题》
|
C语言
【C 语言】二级指针作为输出 ( 指针输入 | 指针输出 | 二级指针 作为 函数形参 使用示例 )
【C 语言】二级指针作为输出 ( 指针输入 | 指针输出 | 二级指针 作为 函数形参 使用示例 )
493 0
【C 语言】二级指针作为输出 ( 指针输入 | 指针输出 | 二级指针 作为 函数形参 使用示例 )
|
算法 C语言
13【C语言 & 趣味算法】分糖果 问题。(数组名作为函数形参,亦即:形参数组名作 指针变量)
13【C语言 & 趣味算法】分糖果 问题。(数组名作为函数形参,亦即:形参数组名作 指针变量)
13【C语言 & 趣味算法】分糖果 问题。(数组名作为函数形参,亦即:形参数组名作 指针变量)