如何解决关于C ++函数指针的练习
我做这样的运动。要求是在本节中编写代码
#include <iostream>
int minus (int a,int b) {
return a - b;
}
void calculate(int a,int b)
{
int (*myfunc)(int,int);
// STUDENT ANSWER BEGIN
// STUDENT ANSWER END
int ans = (*myfunc)(a,b);
printf("Output of calculation is %d.\n",ans);
}
int main() {
calculate(1,2);
return 0;
}
我写的时候
int (*myfunc) (int,int) = add;
int temp = (*myfunc)(a,b);
cout << temp;
temp 的值等于预期的-1(仅用于测试),但我无法获得 ans 的值。因此,我认为两个*( myfunc)是不同的。我该如何解决? 非常感谢!
解决方法
撰写时:
int (*myfunc) (int,int) = add;
您正在创建一个名为myfunc
的新变量。如果在与原始myfunc
相同的作用域内进行操作,则是编译错误,但如果在新的作用域内进行编写(粘贴的代码的缩进会提示该错误,即使您未显示)括号),则将新的阴影覆盖在原始变量中。通过在该作用域内使用名称myfunc
,您可以引用新变量。
解决方案很简单。无需声明新变量,只需分配给现有变量:
myfunc = add; // or minus
编辑:我误解了问题,并将“但我无法获得ans的值”解释为“但是我无法将值转化为 ans”。但是,如果OP的意思是,我将在此处保留此答案...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。