我有一些返回的函数void
。我指向这些函数,并希望拥有这些函数的数组:
此代码为何起作用:
#include <cstdio>
using std::puts;
void tell() {
puts("hi");
};
void slap() {
puts("goodbye");
}
int main(int argc, char *argv[])
{
void (*tp)() = tell;
void (*sp)() = slap;
void(*funcs[])() = {tp, sp};
for (auto point:funcs) {
point();
}
return 0;
}
当我在不指定指针的情况下尝试此代码时funcs
(即,void(funcs[])() = {tp, sp};
我得到" error: 'funcs' declared as array of functions of type 'void ()' "
的正是它们的确切含义-那么为什么会出错?
我也没有得到语法,int()
的末尾不是void(*funcs[])()
表明实际上调用了一个函数吗?
C ++标准8.3.5 / 10说:
尽管可以有指向函数的指针数组,但不应有任何函数数组。
funcs
必须使用“螺旋规则”读取“ ”的声明:
funcs[]
:funcs
是一个数组
*funcs[]
:funcs
是一个指针数组
(*funcs[])()
:funcs
是没有参数的函数的指针数组
void (*funcs[])()
:funcs
是一个指针数组,指向不返回参数的函数void
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句