gpt4 book ai didi

c++ - c++ 函数指针的用法

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:02:18 25 4
gpt4 key购买 nike

我是C++新手,最近在学习函数指针,对函数指针的用法有点迷茫;

我练习了下面的代码:

#include <iostream>
#include <sstream>
using namespace std;

int subtraction(int a,int b){
return a-b;
}

int main(int argc, const char * argv[])
{

int (*minus)(int,int)=subtraction;
cout<<minus(5,4);

return 0;
}

效果不错;所以,我尝试了一些变化:

#include <iostream>
#include <sstream>
using namespace std;

int subtraction(int a,int b){
return a-b;
}

int main(int argc, const char * argv[])
{

int *minus(int,int)=subtraction;//only here different!
cout<<minus(5,4);

return 0;
}

我在 Mac 上的 Xcode 中练习过,它给我错误:

Illegal initializer (only variables can be initialized)

但我认为编译器可以识别两者是相同的,为什么必须有一对括号?

最佳答案

在你的原始代码中

int (*minus)(int,int)=subtraction;

minus 声明为一个函数指针,它接受参数 int, int 并返回 int

在你的第二个代码中

int *minus(int,int)=subtraction;

minus 声明为一个函数,它接受参数 int, int 并返回一个指针 int *

您可以使用函数名(它会自动转换为函数指针)来初始化函数指针,但您不能初始化函数。

关于c++ - c++ 函数指针的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18952921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com