C++ 调用函数使用指针

C++ 调用函数使用指针,c++,function-pointers,C++,Function Pointers,如何使用函数指针将my_int_func和my_int_func2中的值用作求和参数 #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

如何使用函数指针将my_int_func和my_int_func2中的值用作求和参数

#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;
}
另一种可能的方法是:

#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_functint x和void my_int_funct2int y不返回任何返回类型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_func和my_int_func2。它们将返回这些值作为sum的输入,sum将提示1+2=3


然而,这两个函数不是很有用。正如弗拉德指出的那样,一种更好、更少静态的方法是从用户输入中读取数字。

不清楚您想做什么。这两个函数不返回值,但它们只在屏幕上打印。如果要将作为参数发送给这些函数的两个值求和,只需调用sum2,4,它将被实现为void sumint a,int b{return a+b;}。不需要函数指针,如果你想把它们用于练习,不清楚你想如何使用它们。简单的回答是:你不能,因为函数不返回任何内容,而且函数指针本身也不能告诉您传递给函数的参数。您想做什么,为什么要这样做。这不是解理器编码,聪明的编码是尽可能少地实现结果,在这种情况下cout@tobi303将被实现为。。。您没有将返回类型更改为int。现在,问题的作者将向我们揭示这个语法上繁琐的装置的意义。@BR41N-FCK您可以等作者一周。:这并不罕见。:如果我的答案有问题,他总是可以写评论,我将删除答案。@Sothikvicheachhann I附加的my post和声明为参数的函数隐式转换为指针。所以这些记录int和int*是等价的。谢谢Vlad,但我是一个新程序员,所以我对你的代码没什么看法:为什么你一开始设置x=0,而int,int的意思是?很抱歉问这个问题,因为我是一名新程序员。@SothikVicheachann如果发生错误,例如,如果输入的是字母而不是数字,则函数将返回值0。它就像一个默认值。否则,对于这样一个简单的函数,您必须处理错误。