gpt4 book ai didi

c++ - 在 C++ 中使用函数指针调用函数

转载 作者:行者123 更新时间:2023-11-30 01:58:41 25 4
gpt4 key购买 nike

代码如下:

#include<iostream>
using namespace std;
typedef struct ptrs
{
int (*addptr)(int a, int b);
}mems;

int add(int a, int b)
{
int result = a+b;
return result;
}

int main()
{
mems ptrtest;
ptrtest.addptr = &add;
int c = (*ptrtest.addptr)(3,4);
//int c = ptrtest.addptr(3,4);
cout << c << endl;
return 0;
}

如果我将代码 int c = (*ptrtest.addptr)(3,4); 替换为下一行(现在已注释),结果将相同,这是为什么呢?

最佳答案

当然,int c = (*ptrtest.addptr)(3,4); 是基本情况。但是,在 C++ 中(以及在 C 中),如果您在函数指针上使用调用 (()) 运算符,它将自动执行“解除引用”。就像当分配给函数指针类型的变量时,函数的名称会衰减为函数指针,i。即.

int (*fptr)() = some_func;

一样有效
int (*fptr)() = &some_func;

尽管 func 的类型是int ()(void)

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

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