社区
C语言
帖子详情
实参和形参的问题
rossi789
2004-07-24 05:41:32
书上说,形参的值只能有实参赋给.也就是说.形参的值是由实参决定的.但书上还有一句话说."例如,在函数调用时,形参的值变为12,13.实参的值仍为2.3".
这两句话不是有矛盾吗?形参要变首先实参就要变.但怎么实参的值仍为2,3呢.
...全文
981
20
打赏
收藏
实参和形参的问题
书上说,形参的值只能有实参赋给.也就是说.形参的值是由实参决定的.但书上还有一句话说."例如,在函数调用时,形参的值变为12,13.实参的值仍为2.3". 这两句话不是有矛盾吗?形参要变首先实参就要变.但怎么实参的值仍为2,3呢.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chengzhe
2004-07-25
打赏
举报
回复
楼上的很好
DancingCode
2004-07-25
打赏
举报
回复
很多国外的书上没有实参和行参的概念,只有传值和传址的概念
hqycxy
2004-07-25
打赏
举报
回复
传值调用与传地址调用不同罢了
kudoxinyiji
2004-07-25
打赏
举报
回复
按值传递只是传了一个拷贝,和原版的毫无关系。
等到出了那个函数那几个拷贝也就被自动销毁掉了。
当然值是不会变的。
elevation2me
2004-07-25
打赏
举报
回复
"例如,在函数调用时,形参的值<<<变>>>为12,13.实参的值<<<仍>>>为2.3"
qiqi162002
2004-07-25
打赏
举报
回复
只能说形参的初始值是由实参决定。调用函数时实参只是把值传给形参,以后函数都是对实参进行处理,所以形参发生改变。就像一楼中的例子,a,b 是实参,把值传给X,Y所以说X,Y初始值由实参决定,以后函数的操作都是对X,Y的操作,所以X,Y这两个形参的改变不会引起a,b的改变。
至于实参为什么没变或者说实参应该怎么通过形参改变,你学了指针后比较容易理解(看你这么问应该还没学指针吧,一般都指针时都是说实参和形参的问题)。
KingI
2004-07-25
打赏
举报
回复
实参一般是不能修改的,它只是传递给被调用函数一个拷贝,可以修改拷贝,但不能修改实参.
要修改实参,可以把它的地址作为参数传递过去, 如:
int a;
pass(&a);
这样就可以修改实参的值了.
Helendeng
2004-07-25
打赏
举报
回复
我今天下午看了一下午的指针也发现这个问题很难理解呀!
ttlb
2004-07-25
打赏
举报
回复
up
hcx5581
2004-07-25
打赏
举报
回复
请看一下值传递的原理吧!
its11117
2004-07-25
打赏
举报
回复
如果参数不是指针:
在函数调用的时候将实参的值赋予形参,进入子函数后,形参和实参之间没任何联系。
如果参数是指针:
传递参数后,形参和实参本身的值并无联系,但他们指向同内存单元,可以通过形参改变实参的值。
freedwind
2004-07-25
打赏
举报
回复
就是上面说的,两者分配的内存空间不同,在形参的内存里变,不影响实参内存里的!
chinayang9
2004-07-25
打赏
举报
回复
比如你对着一朵花画写生,
等你画完之后又在画上加了一只蜜蜂,
难道原来的花上就会落一只蜜蜂吗?
一样的道理。
存储地址不一样。
「已注销」
2004-07-25
打赏
举报
回复
形参会产生一个副本,实参没有
随机宝宝
2004-07-24
打赏
举报
回复
实参和行参所在函数分配的内存空间是不一样的,
所以实参将值传递给形参后,只是形参发生变化,而实参本身就不变了。
eagle758
2004-07-24
打赏
举报
回复
你知道参数的传递有值传递,地址传递和引用传递。
如果你知道那就明为什么了。。。
tongliyun
2004-07-24
打赏
举报
回复
行参和实参,如果是通过传值的方式传递的话.那刚传递的时候两个相对的变量的值是一致的.但是要注意的是,实参和行参的所在的函数的分配的内存空间是不一样的.理解了这个,那么对于参数的传递就不会有什么疑问了.如果还是不懂的话,就画出内存变量的空间图啊.一目了然.
whyglinux
2004-07-24
打赏
举报
回复
因为形参和实参在内存中不是同一个变量。虚实结合时实参的值会传递给虚参,但是从此以后在函数内,实参和虚参就没有联系了,虚参的变化也影响不到实参。
zhj545
2004-07-24
打赏
举报
回复
恩,对,就是这样的!
adoqq
2004-07-24
打赏
举报
回复
int f(int x,int y)
{
x=x+10;
y=y+10;
return (x+y)
}
void main()
{
int a=2;
int b=3;
c=f(a,b);
}
这就是你所说的那种情况
形参
实参
影响调试程序
本文档是一个
实参
形参
影响的程序的调试过程及结果,可以帮助更好的理解函数
实参
与
形参
关系
C什么叫
实参
形参
?怎么用?区别?
C什么叫
实参
形参
?怎么用?区别?
C++
形参
与
实参
的区别实例解析
形参
和
实参
的功能是作数据传送。发生函数调用时, 主调函数把
实参
的值传送给被调函数的
形参
从而实现主调函数向被调函数的数据传送。 1.
形参
变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存...
C语言中
形参
和
实参
详解及实例代码
函数的参数分为
形参
和
实参
两种。在本小节中,进一步介绍
形参
、
实参
的特点和两者的关系。
形参
出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。
实参
出现在主调函数中,进入被调函数后,
实参
变量也...
深入解析C#中的命名
实参
和可选
实参
利用“命名
实参
”,您将能够为特定
形参
指定
实参
,方法是将
实参
与该
形参
的名称关联,而不是与
形参
在
形参
列表中的位置关联。利用“可选
实参
”,您将能够为某些
形参
省略
实参
。这两种技术都可与方法、索引器、构造函数和...
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章