C语言函数中返回数组

时间:2014.11.09 发布人:clarkmart0111

C语言函数中返回数组

已解决问题

谷歌clarkmart0111用户在2014.11.09提交了关于“汪涵C语言函数中返回数组”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2024-11-07T10:18:29。main()
{
intb[3];
b=pop();
}
int*pop()
{
inta[3],i;
for(i=0;i<3;i++)
a[i]=i;
returna;
}
这样写好像不对的,那该怎么写呢?希望大家能够帮助她。

详细问题描述及疑问:main()
{
intb[3];
b=pop();
}
int*pop()
{
inta[3],i;
for(i=0;i<3;i++)
a[i]=i;
returna;
}
这样写好像不对的,那该怎么写呢?期待您的答案,千言万语,表达不了我的感激之情,我已铭记在心 !

希望以下的回答,能够帮助你。

第1个回答

用户名:pihdkx  

的程序:
main()
{
intb[3];
b=pop();
}
int*pop()
{
inta[3],i;//定义的局部变房准新深日量a[3]在调用完之后自动释放其空间
for(i=0;i<3;i++)
a[i殖盾]=i;
returna;//返回的是指向数组a[3]的地址而不是数组a罗虽真演试[3]本身
}
注:既然上面说到调用的方法返问答回的是指向数组a[3]的地址,所以主函数中b接收的应该是指向数组a[3]的地址,而数组a[3]在方法调用完后又被关释放了,所以b接收不到数组a[3],故出错。
确的程序:
#include<stdio.h>
main()
{
intb[3];
pop(b,3);
}
voidpop(inta[],intn)//该方法传入两个参数,第一个是传入指向数组的地址,第二个参数是传入数养素被销系章老设过缩组的长度,不需写返回语句return,只需通过指向数组的地址的传入就哥可以直接将数组b[]的值改变
{
inti;
for(i=0;i<n;i++)
a[究矿宣财物i]=i;
}