qq_27424411
qiutuanyang
采纳率23.1%
2017-10-03 08:53 阅读 3.4k

请问C++函数指针如何赋值?

请教各位,我在书上看到函数指针,书上先声明一个函数,然后再声明一个函数指针。
再将函数赋给函数指针。但是我按照这个方式做了之后,发现报错了。请问各位这是什么
原因?
我写的代码
书上的代码
报错提示

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

5条回答 默认 最新

  • qq_33675897 向英杰 2017-10-03 18:17

    在函数里赋值才能通过,如果在全局空间声明时必须赋值。代码如下:

    #include <iostream>
    
    int func(int a) { return 0; }
    
    static int(*ppp)(int) = func; // 方式一
    
    void test()
    {
        ppp = func; // 方式二
    }
    
    using namespace std;
    
    int main()
    {
        ppp = func; // 同方式二
    
        cin.get();
    }
    

    两种方法都可以,当然还有第三种方法,用typedef 进行声明,但是使用时还是必须在函数中(同方法二)

    点赞 3 评论 复制链接分享
  • m0_37872098 m0_37872098 2017-10-03 10:48

    报什么错?
    int (*f)(int x); //f为声明的函数指针
    f=func; //func为 int func(int x) 的函数名,要保证函数指针与被调用函数 返回值与型参一致

    点赞 评论 复制链接分享
  • he_and tnt阿信 2017-10-03 13:38

    我反复看了题主的代码,没有发现错误,但是根据编译器报的错是将int*型数据转换为int型,那就是说你的ppp变量不是一个指针变量,但是这说不过去,请问题主代码一共就这
    几行吗?

    点赞 评论 复制链接分享
  • qq_33115589 mmmmPccPcc 2017-10-03 13:38

    型参可以不用指定吗?直接写类型?好久没用C了

    点赞 评论 复制链接分享
  • a19990412 肥宅_Sean 2017-10-05 10:37

    好奇emmm,那个第一个的#include "iostream" 这样也能过?【捂脸】见识少

    点赞 评论 复制链接分享

相关推荐