c语言中什么叫通过形参返回? 50

比如题目要求传人一个浮点数组和一个表示数组长度的整数,计算数组所有数之和以及数字个数,两个答案通过形参返回,但是我不理解通过形参返回是什么意思。... 比如题目要求传人一个浮点数组和一个表示数组长度的整数,计算数组所有数之和以及数字个数,两个答案通过形参返回,但是我不理解通过形参返回是什么意思。 展开
 我来答
helloharryman
2019-11-12 · TA获得超过852个赞
知道答主
回答量:168
采纳率:58%
帮助的人:12.1万
展开全部
//兄弟首先啊,你传的参数里面 有个 数组长度 那么这个 长度是不是可以认为是你的数字个数呢。
//其次啊 通过形参 返回, 例如你传一个数组 a[10] 那么形参只是复制的 a的地址 传进来, 所以返回不可能通过形参返回, 只能通过形参指向的地址 改变地址内的值。然后你可以在函数外面调用这个值. 严格意义上讲 就没有通过形参返回这一说,因为形参在函数调用完以后就会被释放,他是处于栈中的,只能通过形参所指向的地址返回,除非c++的参数引用,可以通过参数返回。
//如下例:

void func(double *arr, int num)//第一个参数是 数组 第二个参数是数组元素个数
{
for (int i = 1; i < num; i++)
{
arr[0] += arr[i];//所有的数相加的结果放在了arr[0]
}
arr[1] = num;//这个是数组内数字个数 强制int转double
}

int _tmain(int argc, _TCHAR*argv[])//我用的c++main 你可以用c main
{
double a[10] = { 0.254, 0.77, 1.65, 5.95, 47.5, 54.22, 0.356, 1.25, 12.3, 12.8 };//10个元素

func(a, 10);

printf("总和是:%lf,数字个数为:%lf", a[0],a[1]);
getchar();
}
IT圈新鲜事
2019-11-12 · 记录IT技术领域中的新鲜事
IT圈新鲜事
采纳数:1722 获赞数:11351

向TA提问 私信TA
展开全部
就是通过函数的参数返回。
比如说:
int func(int a, int b);
上面这个函数,a和b就是函数的形参。
更多追问追答
追问
那返回呢
追答
就用a,b返回啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一个白日梦9ad4a
2019-11-12 · TA获得超过2.3万个赞
知道大有可为答主
回答量:2.3万
采纳率:71%
帮助的人:2393万
展开全部
我们经常会用到将一个参数在函数外部初始化,然后传入函数,函数给参数赋值后,我们在函数外部使用这个值,最开始学习c++的时候我们就知道这需要将参数以引用的方式传入,却没有更深层次的考虑这个方法的原因,为什么传指针就不行呢?其实这个问题更深层次的原因是形参也是一个变量,我们在将一个初始化好的参数传入函数时其实是将参数赋给形参,比如

void copy1(char*data1){

char* value=new char[1];
value[0]='1';
data=value;
}
void copy2(char*&data2)
{
char* value=new char[1];
value[0]='1';
data=value;
}
int mian()
{
char*data=new char[1];
copy1(data);
copy2(data);
}

在copy1中,我们调用copy1时,实际上是将data的值赋给了data1,这样data1和data这两个指针同时指向了在主函数中申请的这段内存,这样copy1运行时,data1指向新申请的内存,data仍旧指向原来的内存,当copy1运行完释放之后,data就无法获取这段内存。

所以如果想要获取这段内存,就需要用引用来实现,引用其实就是别名的意思,他给data这个指针取了一个别名叫做data2,这样当copy2运行时实际上就是data指向了新申请的内存。
追问
什么玩意儿
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式