微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

关于C ++函数指针的练习

如何解决关于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 举报,一经查实,本站将立刻删除。