我是C的新手,试图改变函数的返回类型。问题是,例如,这些工作:
float fct(int)
float *fct(float)
但是当我尝试将返回类型更改为:
float (*)[n]fct(int *n)
编译器发出错误:
错误:期望标识符或' (' before ') '令牌
即使它告诉我将返回类型更改为float (*)[n]
。
如果有人能解释一下问题是什么就太好了。
你要找的是:
float (*fct(int *n))[SIZE];
我应该注意,如果SIZE
不是一个常量,编译器将不喜欢它。
指针必须有一个标识符,在本例中是fct(int *n)
,这就好像你有(*ptr)[SIZE]
一样,只有ptr
是fct(int *n)
。
编译器消息像往常一样省略指针标识符。它只是告诉你应该是什么类型,那就是float (*)[n]
。例如,如果返回类型是指向int
的指针,它会告诉你返回类型应该是int*
。
现在,换句话说,n
的大小没有多大意义,因为你在函数中使用了一个参数,作为指向int
的指针。
还必须注意不要返回指向局部(在函数中)声明的数组的指针,如果您希望它比函数更长寿,则需要为其分配内存。