关于c语言 在c中调用函数时,只能把实参的值传递给形参,形参的值不能传给实参。这句话对吗?为什么?

 我来答
娱乐小八卦啊a
高粉答主

2020-05-16 · 娱乐小八卦,天天都知道
娱乐小八卦啊a
采纳数:256 获赞数:117838

向TA提问 私信TA
展开全部

不对,在C语言中,传值有地址传值和参数传值,参数传值只能将实参传值给形参,所以A选项正确。C语言中的外部变量是可以在函数之间传递数据的。

C语言中的自动变量是默认的变量,实际上是函数中的局部变量,所以D选项正确。全局变量一经定义都是需要分配内存单元,在程序运行过程中自始至终都会占用固定的空间,在未知内存情况下,最好不要使用全局变量。

函数调用时,值可以双向传递,并没有限制使用全局变量还是局部变量,需要根据程序的逻辑需要进行选择。

扩展资料

C语言参数传递:

1、值传递

参数传递只把变量a的值传递给了变量p,此时变量a与变量p是值相同的两个不同变量,在内存不同的两个地址中,所以对变量p赋值只是修改了变量p的值,并不能修改变量a的值。总结一句话就是:值传递不传递变量本身,只传递变量的值。

2、引用传递

与值传递不同,func的参数是int &p,表示引用传递。如输出所示,通过引用传递,变量a的地址与变量p是相同的,也就是说引用传递把a的地址传给了变量p,所以对变量p进行赋值之后,变量a的值也改变了,因为变量a与变量p实际是同一个变量。

3、指针传递

指针传递,顾名思义,int *p表明p是一个指针变量,调用func(&a)是把变量a的内存地址传递过去赋值给指针变量p,此时指针变量p的值是变量a的内存地址,故可看到输出p为efbfde2c(变量a的内存地址)。

*p是对指针p的值(即变量a的内存地址)进行取值,相当于*&a,所以对*p进行赋值也就改变了变量a的值。

炎二公子
推荐于2017-10-01 · TA获得超过258个赞
知道小有建树答主
回答量:144
采纳率:0%
帮助的人:0
展开全部
比如定义

int f(int b) 这里的b就是形参

在调用的时候

我们写 f(a) 这里的a是本地变量,调用f的时候叫做实参

在f(a)后,函数f里的形参b的值是a赋予的,所以实参的值传递给形参这句话是对的

形参的值不能传给实参这句话在严格意义上来说也是对的,

比如,你在函数f(int b)里面写 b= 1000; 对于实参a来说并没有任何影响。

但是,如果你的函数定义是指针,那么函数可以改变指针上储存的内容,但是不能改变指针本身。如果从这点考虑的话,实参是可以通过形参给改变的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
njupt_hcz
2008-06-15 · TA获得超过114个赞
知道答主
回答量:99
采纳率:0%
帮助的人:0
展开全部
不对,除了楼上所说的指针和数组传递,还有一种情况就是参数分为入口参数和出口参数,二者区别在于入口参数在调用前必须被赋值,而后者在调用后才知道它的值,故出口参数是将形参的值传给实参。(当然,出口参数一般为指针或数组之类的)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
红色老赵
2013-03-21 · TA获得超过222个赞
知道答主
回答量:69
采纳率:0%
帮助的人:15.2万
展开全部
实参是全局变量,而形参是局部变量.并且它们存放的地址也不一样.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
校哲让初阳
2020-04-26 · TA获得超过5302个赞
知道大有可为答主
回答量:3106
采纳率:32%
帮助的人:205万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式