C语言 怎么返回一个数组

但return它的指针的时候,编译器会警告functionreturnsaddressoflocalvariable[enabledbydefault]... 但return它的指针的时候, 编译器会警告function returns address of local variable[enabled by default] 展开
 我来答
自我西郊
推荐于2017-11-25 · TA获得超过351个赞
知道答主
回答量:132
采纳率:0%
帮助的人:129万
展开全部

你想返回一个数组,因为你在一个函数内创建了数组,属于局部变量,所以他在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,动态申请释放更合理。

追问
我应该在哪里free呢..?
追答

这个函数返回的是一个指针   

int* p = aboveFunction(...);
// code
free(p);
xoaxa
2013-07-07 · TA获得超过8610个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3474万
展开全部
1、在void strcat()的strcat前添加*,表示返回char 指针。
2、strcat()应该返回str1,即 return str1。str1是连接的结果,调用者有责任确保str1数组空间足够大,以便在其尾部添加str2后,不会覆盖其他数据空间。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
home翼1
2013-07-06
知道答主
回答量:26
采纳率:0%
帮助的人:20.2万
展开全部
不需要return返回,数组操作的是地址,只要你在被调函数里对数组操作了,主函数里的数组也是会变得,把子函数的return部分去掉就可以了。。。。。指针也是调用地址的,一样的,都不用返还值,都不用return
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
496443004
2013-07-06
知道答主
回答量:3
采纳率:0%
帮助的人:4480
展开全部
好像,使用指针是不需要返回值RETURN 的。 使用指针函数直接是形参与实参共用同一片内存空间,形参变化了,实参也就变化了。因此,直接使用 void函数就好。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaixingui2012
2013-07-06 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6419万
展开全部
在定义数组时,前面加上static,如:
static char str[100] ;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式