C++ 如何解决函数指针的这个错误?

C++ 如何解决函数指针的这个错误?,c++,C++,在程序中,一个指针被声明为函数(p),该函数被初始化为函数(add) 我试图阅读所有与函数指针相关的概念。 但我无法解决它 请帮我解决这个程序没有任何错误 #include <stdio.h> #include <iostream> using namespace std; int add(int n1, int n2) { return n1 + n2; } int *functocall(int,int); int caller(int n1, int

在程序中,一个指针被声明为函数(p),该函数被初始化为函数(add)

我试图阅读所有与函数指针相关的概念。 但我无法解决它 请帮我解决这个程序没有任何错误

#include <stdio.h>
#include <iostream>
using namespace std;

int add(int n1, int n2) 
{
    return n1 + n2;
}

int *functocall(int,int);
int caller(int n1, int n2, int(*functocall)(int, int))
{
    return (*functocall)(n1, n2);
}

int main() 
{
    int a, b, c;
    cin >> b >> c;

    int (*p)(int,int)=&add;
    a=caller(b,c,(*functocall)(b,c));
    printf("%d",a);

    return 0;
}
#包括
#包括
使用名称空间std;
整数相加(整数n1,整数n2)
{
返回n1+n2;
}
int*函数调用(int,int);
int调用者(int n1,int n2,int(*functocall)(int,int))
{
返回(*函数调用)(n1,n2);
}
int main()
{
INTA、b、c;
cin>>b>>c;
整数(*p)(整数,整数)=&add;
a=调用者(b,c,(*函数调用)(b,c));
printf(“%d”,a);
返回0;
}
如果输入为20 70 输出必须为90

(*functocall)(b,c)
没有达到预期效果,您正在尝试调用
functocall
。(注意,
functocall
被声明为一个函数,它接受两个
int
s并返回一个
int*

您应该将函数指针本身传递给调用方,例如

a = caller(b, c, p);

(*functocall)(b,c)
没有达到预期效果,您正在尝试调用
functocall
。(注意,
functocall
被声明为一个函数,它接受两个
int
s并返回一个
int*

您应该将函数指针本身传递给调用方,例如

a = caller(b, c, p);


太复杂了。通常情况下,当你不理解某件事时,你会让它变得更复杂,然后它就需要变得更复杂

#include <stdio.h>
#include <iostream>
using namespace std;

int add(int n1, int n2) 
{
    return n1 + n2;
}

int caller(int n1, int n2, int(*functocall)(int, int))
{
    return (*functocall)(n1, n2);
}

int main() 
{
    int a, b, c;
    cin >> b >> c;

    a = caller(b,c,add);
    printf("%d",a);

    return 0;
}

太复杂了。通常情况下,当你不理解某件事时,你会让它变得更复杂,然后它就需要变得更复杂

#include <stdio.h>
#include <iostream>
using namespace std;

int add(int n1, int n2) 
{
    return n1 + n2;
}

int caller(int n1, int n2, int(*functocall)(int, int))
{
    return (*functocall)(n1, n2);
}

int main() 
{
    int a, b, c;
    cin >> b >> c;

    a = caller(b,c,add);
    printf("%d",a);

    return 0;
}

这个函数指针根本没有被使用。@VTT您能告诉我哪个函数指针没有被使用吗?
在一个程序中,一个指针被声明为函数(p),它被初始化为函数(add)
int(*p)(int,int)
是指针
p
的声明,该指针指向返回
int
并接受两个类型为
int
的参数的函数。(必须从外向内读取。)要使用指针,只需注意
p
。要调用指针对象,请使用
p(b,c)
(*p)(b,c)
。在C++中,函数调用只是一个<代码>操作器()/>代码,它可以应用于函数指针(或函数标识符)。无论如何,这个函数指针甚至不被使用。@ VTT,请您提一下哪个函数指针甚至没有被使用?????代码>。
int(*p)(int,int)
是指针
p
的声明,该指针指向返回
int
并接受两个类型为
int
的参数的函数。(必须从外向内读取。)要使用指针,只需注意
p
。要调用指针对象,请使用
p(b,c)
(*p)(b,c)
。在C++中,函数调用只是一个<代码>操作器()/<代码>,它可能应用于函数指针(或函数标识符)。我不理解为什么(*FultCalObl)(b,c)不工作。…@ Alxistist<代码>调用方< /> >期望函数指针作为它的第三个参数,然后它可以调用函数体内部的函数指针。但是,
(*functocall)(b,c)
不是函数指针,而是函数调用表达式。我不明白为什么(*functocall)(b,c)不起作用?@AlexStacy
调用方
希望函数指针作为其第三个参数,然后它可以在函数体内部调用它。但是
(*functocall)(b,c)
不是函数指针,它是函数调用表达式。你能解释一下functocall在我的程序中的作用吗?你能解释一下functocall在我的程序中的作用吗?