调用函数使用指针
Call function use pointer
如何使用函数指针将 my_int_func
和 my_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_func
和 my_int_func2
。他们将 return 这些值作为 sum
的输入,然后 1 + 2 = 3
.
不过这两个功能用处不大。正如 Vlad 指出的那样,一种更好且不太静态的方法是从用户输入中读取数字。
如何使用函数指针将 my_int_func
和 my_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_func
和 my_int_func2
。他们将 return 这些值作为 sum
的输入,然后 1 + 2 = 3
.
不过这两个功能用处不大。正如 Vlad 指出的那样,一种更好且不太静态的方法是从用户输入中读取数字。