0

我希望 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;
}
4

3 回答 3

3

如果您阅读了顺时针/螺旋规则,您会发现它f实际上是一个函数,它返回一个指向返回函数的指针数组的指针char*。换句话说,它是一个函数原型,而不是一个变量声明。

试试这个:

f_pointer_type (*f)[];
于 2013-08-07T11:56:28.797 回答
1

函数指针数组写为char* (*f[])(). 你括号错了。

尽管在f_pointer_type funcs[3]示例中始终使用 typedef 当然更好。

于 2013-08-07T11:58:44.390 回答
1

您将 a 定义ffunction pointer. f指向一个函数的指针,该函数具有void paramsreturn char *

于 2013-08-07T11:58:54.350 回答