功能声明

yoy*_*oyo 0 c syntax

int   func(void)   [5]; 
Run Code Online (Sandbox Code Playgroud)

为什么上面的行在c中无效?众所周知,函数可以用作变量.但是,我不明白为什么编译器会出错.

为什么我使用该行是因为我试图创建5个函数变量.为此,我写了这样的,如上所示.

Pab*_*ruz 11

因为它不符合C语言的有效语法?

也许你应该指明你想用这句话做什么才能得到你可能正在寻找的答案.

  • 为明显但100%正确的答案+1. (2认同)

Ale*_* C. 8

这不是合法的C语法,句号.

它在C++中也是无效的,因为函数不能放在数组中(你试图声明一个包含五个函数的数组).但是,以下在C和C++中都有效:

int (*func[5])();     // C++ version
int (*func[5])(void); // C version
Run Code Online (Sandbox Code Playgroud)

并声明一个由五个函数指针组成的数组.

如果您想要一个返回数组的函数,那么在C中就可以了

int *func(void);
Run Code Online (Sandbox Code Playgroud)

在C++中你做到了

int* func();
Run Code Online (Sandbox Code Playgroud)

要么

int (&func())[5];
Run Code Online (Sandbox Code Playgroud)

它返回对五个整数数组的引用.