调用函数使用指针

Call function use pointer

如何使用函数指针将 my_int_funcmy_int_func2 的值用作 sum 的参数?

#include <iostream>

using namespace std;

void my_int_func(int x){
    cout<<x<<endl;
}


void my_int_func2(int y){
    cout<<y;
}
int main(){
    void (*huu)(int);
    huu = *my_int_func;
    (*huu)(2);
    void (*uuu)(int);
    uuu = *my_int_func2;
    (*uuu)(4);
    return 0;
}

void sum(int a, int b){

}

你的意思好像是下面这样

#include <iostream>

int my_int_func()
{
    std::cout << "Enter an integer: ";

    int x = 0;
    std::cin >> x;

    return x;
}

int my_int_func2()
{
    std::cout << "Enter an integer: ";

    int x = 0;
    std::cin >> x;

    return x;
}

long long int sum( int(), int() );

int main()
{
    std::cout << sum( my_int_func, my_int_func2 ) << std::endl;
    return 0;
}

long long int sum( int f1(), int f2() )
{
    return f1() + f2();
}

另一种可能的方法如下

#include <iostream>

int my_int_func()
{
    std::cout << "Enter an integer: ";

    int x = 0;
    std::cin >> x;

    return x;
}

int my_int_func2()
{
    std::cout << "Enter an integer: ";

    int x = 0;
    std::cin >> x;

    return x;
}

long long int sum( int, int );

int main()
{
    int ( *pf[2] )() = { my_int_func, my_int_func2 };

    int x = pf[0]();
    int y = pf[1]();

    std::cout << sum( x, y ) << std::endl;
    return 0;
}

long long int sum( int x, int y )
{
    return x + y;
}

首先:您的函数 void my_int_func(int x)void my_int_func2(int y) 没有 return 任何东西(return 类型 void)。他们只是提示输入参数为stdout.

你可能想要的是这样的东西

#include <iostream>

using namespace std;

int my_int_func(int x)
{
  return x;
}

int my_int_func2(int x)
{
  return x;
}

void sum(int x, int y)
{
  std::cout << x << " + " << y << " = " << (x + y) << endl;
}

int main()
{
  int (*f1)(int) = *my_int_func;
  int (*f2)(int) = *my_int_func2;
  sum(f1(1),f2(2));
}

这会将整数值 1 和 2 传递给 my_int_funcmy_int_func2。他们将 return 这些值作为 sum 的输入,然后 1 + 2 = 3.

不过这两个功能用处不大。正如 Vlad 指出的那样,一种更好且不太静态的方法是从用户输入中读取数字。