[英]Return pointer on 2d Array from a function
我是 C 新手,正在尝试更改函数的返回类型。 问题是,例如,这些工作:
float fct(int)
float *fct(float)
但是当我尝试将返回类型更改为:
float (*)[n]fct(int *n)
编译器发出错误:
错误:预期标识符或 '(' 在 ')' 标记之前
即使它告诉我将返回类型更改为float (*)[n]
。
如果有人可以解释问题所在,那就太棒了。
您正在寻找的是:
float (*fct(int *n))[SIZE];
我应该注意,如果SIZE
不是常量值,编译器不会喜欢它。
指针必须有一个标识符,在这种情况下是fct(int *n)
,就好像你有类似(*ptr)[SIZE]
的东西,只有ptr
是fct(int *n)
。
编译器消息像往常一样省略了指针标识符。 它只是告诉你应该是什么类型,那就是float (*)[n]
。 例如,如果返回类型是指向int
的指针,它会告诉您返回类型应该是int*
。
现在,换一种说法, n
size 没有多大意义,因为您在函数中将其用作参数,用作指向int
的指针。
您还必须注意不要返回指向本地(在函数中)声明的数组的指针,如果您希望它比函数更有效,则需要为其分配内存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.