Stanislav Petrov Asked:2020-10-23 19:59:35 +0000 UTC2020-10-23 19:59:35 +0000 UTC 2020-10-23 19:59:35 +0000 UTC 将函数指针传递给函数的区别 772 这两种结构有什么区别。 void Function(int operation(int) ) {} void Function(int (*operation)(int) ) {} c++ 2 个回答 Voted HolyBlackCat 2020-10-23T20:03:50Z2020-10-23T20:03:50Z 完全没有区别。两个选项都意味着传输int (*operation)(int)。 Best Answer Croessmah stands with Russia 2020-10-23T20:20:54Z2020-10-23T20:20:54Z 在第一种情况下,参数有一个函数类型,在第二种情况下,一个函数指针。根据11.3.5/5C++ 标准中的一个子句,如果参数的类型为 function T,则将其转换为指向 function 的类型指针T。 (N4659) 11.3.5 功能 ... 确定每个参数的类型后,将任何类型为“T数组”或函数类型T的参数调整为“指向T的指针” ... 根据函数中的这一点 void Function(int operation(int)) {} 参数operation的类型为int (*)(int),即 这样的声明将是等效的 void Function(int (*operation)(int) ) {} 数组也会发生同样的事情。
完全没有区别。两个选项都意味着传输
int (*operation)(int)。在第一种情况下,参数有一个函数类型,在第二种情况下,一个函数指针。根据
11.3.5/5C++ 标准中的一个子句,如果参数的类型为 functionT,则将其转换为指向 function 的类型指针T。根据函数中的这一点
参数
operation的类型为int (*)(int),即 这样的声明将是等效的数组也会发生同样的事情。