我做题时,需要用到一个子函数,子函数的变量是一个数组,经过子函数运算后,返回来的仍然是一个数组,定义时把子函数定义为double型了,希望返回的数组也是double型,请问怎么返回。我不想用指针,只想用数组型的,返回值也是数组型的。
这个程序只是一个小部分,这个返回来的数组还要用于后面的其他数组计算,因为改成指针的话前面很多程序都得改动非常麻烦,所以不想用指针。请大家帮我想想怎么弄
c语言子函数怎么返回数组
答案:5 悬赏:40 手机版
解决时间 2021-01-25 07:52
- 提问者网友:愿为果
- 2021-01-24 14:59
最佳答案
- 五星知识达人网友:雾月
- 2021-01-24 16:34
//最好是这样做
void fun(double in_out_data[], unsigned size)
{
//直接处理in_out_data进来的数据
}
//非要返回数组就这样
double* fun(double in_data[])
{
double* ret = new double[你要返回的大小];
//处理数据
return ret;
}
//或是这样
double* fun(double in_data[])
{
//处理in_data里边的数据
return in_data;
}
void fun(double in_out_data[], unsigned size)
{
//直接处理in_out_data进来的数据
}
//非要返回数组就这样
double* fun(double in_data[])
{
double* ret = new double[你要返回的大小];
//处理数据
return ret;
}
//或是这样
double* fun(double in_data[])
{
//处理in_data里边的数据
return in_data;
}
全部回答
- 1楼网友:一把行者刀
- 2021-01-24 18:00
如果是非静态的局部变量,那第二次调用时,数组会被 ”清空“。
子函数中,声明的非静态局部变量、数组,使用的是函数栈空间。
在每次调用函数时,都会新分配一块儿栈空间给函数使用。
因此相当于每次调用子函数,子函数内的局部变量都会被初始化~
- 2楼网友:拾荒鲤
- 2021-01-24 17:18
如果是c语言,返回值只能是数组首地址。也就是说还得用指针。。。
你可以用传递参数的形式来实现在函数内进行运算
- 3楼网友:舊物识亽
- 2021-01-24 16:53
接楼上
所以,你的子函数定义应该是整形的,不能使双精度型的!因为你要返回的是数组的地址!
- 4楼网友:神鬼未生
- 2021-01-24 16:41
double *shuzuhua()
{
double *pp = new double[100];
pp[0]= 0.333;
pp[88]=9993;
return pp;
}
double *shuzu=shuzhhua();
这样你就可以使用double数组了,上面定义了100个double的数组。
返回的pp你可以直接使用。
如:shuzu[0]的值为0.333
shuzu[88]的值为9993;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯