章节
问答
课签
笔记
评论
占位
占位

形参与实参

小明和小刚都说,要早起去锻炼,但是呢,小明每天都在睡懒觉,他只是形式上说说而已;而小刚则每天都在坚持,他是在实际行动。C语言函数中的参数也和情景中的类似有两种。

函数的参数分为形参实参两种,形参是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数,就类似小明,说了的话而不实际行动;实参是在调用时传递该函数的参数,就如小刚能实际行动起来。

函数的形参和实参具有以下特点:

  • 形参只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。
  • 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值等办法使实参获得确定值。
  • 在参数传递时,实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配”的错误。

例如:以下函数multiDouble(int x)实现把x乘以2再返回给函数调用处。

任务

小编碰到一道数学题,计算三角形的周长。

在代码编辑器中

第11、24行根据注释提示填写代码

输出结果为: 三角形周长是:12 

?不会了怎么办
||
1
#include <stdio
    .h>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
提交
重置代码
||

请验证,完成请求

由于请求次数过多,请先验证,完成再次请求

加群二维码

打开微信扫码自动绑定

您还未绑定服务号

绑定后可得到

  • · 粉丝专属优惠福利
  • · 大咖直播交流干货
  • · 课程更新,问题答复提醒
  • · 账号支付安全提醒

收藏课程后,能更快找到我哦~

使用 Ctrl+D 可将课程添加到书签

邀请您关注公众号
关注后,及时获悉本课程动态

举报

0/150
提交
取消
全部 精华 我要发布

最新回答 / iiLZJii
<...图片...>在自定义函数int getGirth(int a,int b,int c)中,因为无法构成三角形所以return 0相当于将getGirth(a,b,c)赋值为0,你可以将在主函数中的getGirth (a,b,c)理解为一个值为0的字母了,故输出0,而可以构成三角形的话return cirf就是将cirf的值赋予自定义函数int getGirth(int a,int b,int c),此时getGirth (a,b,c)的值为cirf的值,从而输出cirf的值

最赞回答 / 大哥布
按照教程里的话,不管a,b,c构不构成三角形,结果总是会输出“三角形的周长是:”这几个字。即使不构成三角形。

最新回答 / 慕圣4515057
你看这个图的上面一句话,”函数multiDouble(int x)实现把x乘以2再返回给函数调用处。“*2就是为了符合他的目的,也就是乘以二再返回给函数调用处

最赞回答 / weixin_慕田峪5589991
#include <stdio.h>int getGirth(int a,int b,int c)   //a,b,c为实参,需事先赋值{    if( (a+b)<=c || (a+c)<=b || (b+c)<=a )   //判断是否为三角形    {        printf("不构成三角形\n");        return 0;                                    }    else    {      int cirf; /...

最赞回答 / 0077404592
#include <stdio.h>int getGirth(int a,int b,int c){    if( (a+b)<=c || (a+c)<=b || (b+c)<=a )   //判断是否为三角形    {        printf("不构成三角形\n");        return 0;                                    }    else    {      int cirf = a + b + c;     //计算...

最赞回答 / weixin_慕仰2568236
上面定义的周长形参函数里就包含了if...else{    cirf=a+b+c;return cirf;    },你调用周长函数printf("三角形的周长是:%d\n", getGirth(a,b,c));  就也相当于在满足abc组成三角形的前提下开始用cirf=a+b+c的逻辑计算周长。

最赞回答 / 慕先生9501751
自定义函数需要在主函数中进行调用。cirf不是自定义函数,getgirth才是自定义函数

已采纳回答 / RightBOY
return cirf只是非主函数的结束,也就是说他不是运算得应该是cirf嘛,然后你定义的形参getGirth(a,b,c)也就等于cirf,所以主函数给出数值加以运算才能得出12的呀

最赞回答 / RightBOY
return两个是因为它在那个都可以结束,虽然主函数在后面,但是这个代码就相当于把主函数给的值代入你的自定义函数中,然后自定义函数加以运算再反馈到主函数给出值的。 哥,那人家第一个if算了不对,之后当然选这个else,你第二个return后面都跟0了你还想让代码得什么,0不等于0难道等于12嘛

最赞回答 / 弥丶漫
int getGirth(int a,int b,int c)a,b,c局限于GetGirth函数中,且未赋予有任何的值,所以被称为形参;而,后面:int main(){    int a, b, c;    //虽然这里也定义了a,b,c但是与GetGirth函数中的abc互不影响,因为都是局部的定义printf("三角形的周长是:%d\n",GetGirth(a,b,c));  //在这里,给GetGirth中的abc赋予了与之对应的abc值,那么就说这个 main函数中abc是实参

最新回答 / weixin_慕婉清5253664
前面的a b c是形参,后面定义赋值的a b c是实参,因为有了具体的值

最赞回答 / qq_慕田峪7562408
可以,return后面返回的是调用的一个函数值,就像答案里面令cirf = a+b+c ,然后return cirf,如果你非要不用cirf,也是可以直接返回a+b+c,不过会显示你输入错误

最新回答 / 慕UI916101
multiDouble(int,n)multiDouble是自定义函数,n是设定的参数,可以随意声明改变参数
全部 我要发布
最热 最新
只看我的

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

账号登录 验证码登录

遇到问题
忘记密码

代码语言