#include<stdio.h>
int ser()
{
intx[3];
x[0]=20;
x[1]=30;
x[2]=40;
return x[3];
}
void main()
{
int a[3];
a=ser();
printf("a[0]:%d \na[1]:%d\n a[2]:%d\n",a[0],a[1],a[2]);
}
如程序:在ser中的数组x 想把它传到主函数中的数组a中并输出 怎样实现?
c语言 返回多个数据与接收
答案:2 悬赏:20 手机版
解决时间 2021-03-05 23:41
- 提问者网友:杀手的诗
- 2021-03-05 00:22
最佳答案
- 五星知识达人网友:逐風
- 2021-03-05 01:02
你的这个程序是有误区的。2113
其一,数组变量记录的是数组首地址并不是内存块,也就是说返5261回的只是指针。在函数运行完了以后内存就被回收,只传数组变量是不能4102够传值的。
其二,你返回的是x[3],但是这个数1653组x并没有这个变量。会出错。
解决方法其实很简单。
在版main函数中声明数组a,然后让a作为参数传入函数,函数内部赋值。都不用返回参权数。
#include<stdio.h>
void ser(int x[])
{
x[0]=20;
x[1]=30;
x[2]=40;
}
void main()
{
int a[3];
ser(a);
printf("a[0]:%d \na[1]:%d\n a[2]:%d\n",a[0],a[1],a[2]);
}
其一,数组变量记录的是数组首地址并不是内存块,也就是说返5261回的只是指针。在函数运行完了以后内存就被回收,只传数组变量是不能4102够传值的。
其二,你返回的是x[3],但是这个数1653组x并没有这个变量。会出错。
解决方法其实很简单。
在版main函数中声明数组a,然后让a作为参数传入函数,函数内部赋值。都不用返回参权数。
#include<stdio.h>
void ser(int x[])
{
x[0]=20;
x[1]=30;
x[2]=40;
}
void main()
{
int a[3];
ser(a);
printf("a[0]:%d \na[1]:%d\n a[2]:%d\n",a[0],a[1],a[2]);
}
全部回答
- 1楼网友:孤独入客枕
- 2021-03-05 02:25
scanf("%d,%d,%d",&a,&b,&c);
你好,亲。scanf输入时候遇到了空格,回车,或者是tab都认为输入结束。
你的输入语句中每两个数据间有个逗号,所以每次输入完第一个数字应该输入个逗号,再输入第二个数据,第二个完后,再输入逗号,在输入第三个,第三个完后回车就得到结果了。
我觉得你没有必要这样写scanf("%d%d%d",&a,&b,&c);,去掉逗号,输入第一个数据后,空格,输入第二个,再空格,输入第三个,再回车,就行了,亲。
希望有所帮助
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯