C++ 调用函数使用指针
如何使用函数指针将my_int_func和my_int_func2中的值用作求和参数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
#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。它就像一个默认值。否则,对于这样一个简单的函数,您必须处理错误。