我无法理解char (*(*a)())[]
int main()
{
char (*(*a)())[]; // do not change this
char *x="My endless\n";
char * func (){
return(x);
}
a=func;
return 0;
}
编译时,我收到如下警告:main.c:13:6:警告:来自不兼容的指针类型[-Wincompatible-pointer-types]
的赋值指a=func
[我知道char (*(*a)())
表示指向一个函数的指针,该函数返回一个char指针,但是我不知道[]
的加法即char (*(*a)())[];
此
char (*(*a)())[];
是指向函数的指针的声明,该函数返回指向不完整类型char[]
的数组的指针。
请注意,在另一个函数中定义函数不是标准的C功能。
这里是至少要编译的演示程序。
#include <stdio.h>
char ( *f() )[]
{
static char s[][10] =
{
"Hello",
"World"
};
return s;
}
int main(void)
{
char (*(*a)())[] = f;
char ( *p )[] = a();
puts( *p );
return 0;
}