这是《c专家编程》上的一些规则
指针的一些非法使用情况:
函数的返回值不能是一个函数,所以像foo()这样是非法的。
函数的返回值不能是一个数组,所以想foo()[]这样是非法的。
数组里面不能有函数,所以像foo[]()这样是非法的。
但是像下面这样的是合法的:
函数的返回值允许是一个指向函数的指针,如:int(*foo())();
函数的返回值允许是一个指向数组的指针,如 int(*foo())[];
数组里面允许有函数指针,如 int (* foo[])();
数组里面允许有其他数组,所以你经常看到int foo[][];