为了账号安全,请及时绑定邮箱和手机立即绑定

如下例子,请问该怎么返回一个数组?

如下例子,请问该怎么返回一个数组?

C PHP
慕田峪7331174 2022-04-16 15:11:56
但return它的指针的时候, 编译器会警告function returns address of local variable[enabled by default]
查看完整描述

3 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

你想返回一个数组,因为你在一个函数内创建了数组,属于局部变量,所以他在stack部分,而stack部分是用后类似于销毁的,你返回的地址类似于一块垃圾的地址,所以编译警告。你要想返回函数内创建的数组地址的话需要


//inside a function{    // n is the size of the array;    int* array = (int *)malloc(sizeof(int)*n);         /*        do something with array    */    return array;}

这样这个数组建立在heap堆上,调用完函数还在,而你返回了那个堆上数组的首地址,这样就没问题了。

用完free(array);

用static不推荐,用static的话会在整个程序的run time运行时都占用空间。而是用malloc,动态申请释放更合理。


查看完整回答
反对 回复 2022-04-19
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

1、在void strcat()的strcat前添加*,表示返回char 指针。
2、strcat()应该返回str1,即 return str1。str1是连接的结果,调用者有责任确保str1数组空间足够大,以便在其尾部添加str2后,不会覆盖其他数据空间。

查看完整回答
反对 回复 2022-04-19
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

不需要return返回,数组操作的是地址,只要你在被调函数里对数组操作了,主函数里的数组也是会变得,把子函数的return部分去掉就可以了指针也是调用地址的,一样的,都不用返还值,都不用return

查看完整回答
反对 回复 2022-04-19
  • 3 回答
  • 0 关注
  • 202 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号