繁体   English   中英

从函数返回二维数组上的指针

[英]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]的东西,只有ptrfct(int *n)

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

现在,换一种说法, n size 没有多大意义,因为您在函数中将其用作参数,用作指向int的指针。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM