gpt4 book ai didi

c - 从函数冲突类型返回数组

转载 作者:行者123 更新时间:2023-11-30 17:42:07 24 4
gpt4 key购买 nike

我的目的是在函数中创建一个数组,然后将其返回给主函数。建议我在函数中的堆上分配数组(否则一旦返回就从堆栈中弹出)。

代码如下:

 #include <stdlib.h>
int main() {

double *v1 = myFunction();

return 0;
}



double *myFunction() {
return malloc(10*sizeof(double));
}

当我使用 gcc 编译此代码时,我收到以下错误消息:

 ..\src\main3.c:38:9: error: conflicting types for 'myFunction'

这段代码有什么问题?为什么我会收到此编译错误?

最佳答案

在使用myFunction()之前提供它的原型(prototype),即在main()之前,如下所示:

double * myFunction();

int main(void)
{
...

如果不这样做,编译器在第一次看到 myFunction() 时会假定类型为 int

后来它发现它被声明为 double * (与 int 不同),然后引发错误。

打开所有警告会提示您使用没有原型(prototype)的函数。使用 -Wall -Wextra -pedantic 打开大多数 gcc 警告。

<小时/>

另一个问题是,声明一个没有指定任何参数的函数会导致调用该函数时传递什么内容:

double * myFunction();

如果函数应指定为有任何参数,则指定void作为参数:

double * myFunction(void);

代码定义main()的方式相同。它应该是:

int main(void);

或者是

int main(int argc, char ** argv);

关于c - 从函数冲突类型返回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20799064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com