我希望f指向一个f_pointer_type数组。那我在这里想念的是什么?我收到一个错误'左值作为赋值的左操作数'。这是什么意思?
#include <stdio.h>
typedef char* (*f_pointer_type)();
char * retHello()
{
return "hello";
}
int main()
{
char (* ( *f())[])(); //Declare f to be a pointer to an array of pointers to function that gets nothing and return a char.
f_pointer_type funcs[3]; //an array of pointers to function that gets nothing and returns a pointer to char
f = &funcs; //ERROR : lvalue required as left operand of assignment
return 0;
}
答案 0 :(得分:3)
如果您阅读clockwise/spiral rule,您会看到f
实际上是一个函数,返回指向返回char*
的函数的指针数组的指针。换句话说,它是一个函数原型,而不是一个变量声明。
请改为尝试:
f_pointer_type (*f)[];
答案 1 :(得分:1)
函数指针数组写为char* (*f[])()
。你的括号错了。
虽然在f_pointer_type funcs[3]
示例中始终使用typedef当然更好。
答案 2 :(得分:1)
您将f
定义为function pointer.
f
是指向具有void params
和return char *