指向函数指针数组的指针

时间:2013-08-07 11:42:40

标签: c pointers

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

3 个答案:

答案 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 paramsreturn char *

的函数的指针