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

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

5个回答

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

#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 进行声明,但是使用时还是必须在函数中(同方法二)

qq_33675897
向英杰 回复bye_cherry: 在全局空间里声明的变量如果需要赋值,那么在声明的同时必须赋值,否则只能在函数里赋值
2 年多之前 回复
bye_cherry
bye_cherry 什么原因呢
2 年多之前 回复

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

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

he_and
灰色世界的阿信 可以直接写类型,在申明变量时
2 年多之前 回复

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

Zindow
Zindow 在函数体以外的赋值只能在声明的时候赋值。
2 年多之前 回复

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐