【发布时间】:2020-09-01 06:59:08
【问题描述】:
我希望我的格式等没问题,因为这是我第一次发布问题。无论如何,我正在搜索并且找不到解释为什么这两个不同的函数定义/声明彼此等价:
#include <iostream>
using namespace std;
int quadrat( int x )
{
return x*x;
}
void printTable_1( int start, int end, int step, int (*func)( int x ) )
{
for ( int i = start; i <= end; i+=step )
{
cout << i << "\t" << func(i) << '\n';
}
}
void printTable_2( int start, int end, int step, int func( int x ) )
{
for ( int i = start; i <= end; i+=step )
{
cout << i << "\t" << func(i) << '\n';
}
}
int main()
{
printTable_1(1,10,1,quadrat);
printTable_2(1,10,1,quadrat);
return 0;
}
我不明白的是,我没有在函数“printTable_2”中明确定义一个函数指针,就像函数“printTable_1”一样,它仍然需要一个。提前感谢您的回答!
【问题讨论】:
-
int func(int)作为参数与声明“数组”参数(例如int a[])非常相似,因为编译器将其视为指针。 -
如果您查看汇编代码,您会发现两者都转换为函数 ptr godbold
-
*.com/a/9413/13071379 可能是这个回答者可以为你解决问题
-
@UmarFarooq 您链接中的答案似乎不太相关,但this 对同一问题的回答确实如此。
-
@yaodav,不错的网站!快速查看汇编代码非常酷。
标签: c++ callback function-pointers