C语言 从函数返回2d数组的指针



我是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]一样,只有ptrfct(int *n)

编译器消息像往常一样省略指针标识符。它只是告诉你应该是什么类型,那就是float (*)[n]。例如,如果返回类型是指向int的指针,它会告诉你返回类型应该是int*

现在,换句话说,n的大小没有多大意义,因为你在函数中使用了一个参数,作为指向int的指针。

还必须注意不要返回指向局部(在函数中)声明的数组的指针,如果您希望它比函数更长寿,则需要为其分配内存。

最新更新