| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 800 人关注过本帖
标题:一个形参和实参的问题,我实在搞不清楚,请大家帮帮忙。
只看楼主 加入收藏
自由战士89
Rank: 5Rank: 5
等 级:职业侠客
帖 子:154
专家分:387
注 册:2010-9-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
一个形参和实参的问题,我实在搞不清楚,请大家帮帮忙。
很多地方都说“改变函数形参的值,不会改变对应实参的值”,可是我发现有很多实参改变了。比如:
#include<stdio.h>
void func(int *a,int b[])
{
    b[0]=*a+6;
}
void main()
{
    int a,b[5];
    a=0;b[0]=3;
    func(&a,b);
    printf("b[0]=%d\n",b[0]);
}
这里输出结果为b[0]=6,如果不改变,应该是b[0]=3啊
这是为什么?到底形参和实参在什么样的其情况下有什么样的关系?麻烦知道的说一下,我实在是搞不清楚。谢谢!
搜索更多相关主题的帖子: 形参 
2010-09-06 20:55
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
收藏
得分:0 
给你写个简单的例子:
#include <stdio.h>
void scmp(int a,int b)
{
int t;
t=a;a=b;b=t;
}
void main()
{
int a=5,b=3;
scmp(a,b);
printf("a=%d b=%d",a,b);
}
看看结果是什么,调试一下你就清楚

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-09-06 20:58
蓝梅
Rank: 2
等 级:论坛游民
帖 子:23
专家分:19
注 册:2010-9-6
收藏
得分:10 
实参传给形参是地址时,他们共用存储空间,形参的值变了即存储单元的值改变了,因此数组中的值变了。
2010-09-06 21:05
封心锁ai
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-09-06 21:06
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:10 
它只是改变形参数组元素,调用函数把数组的地址传给形参,改变只是地址所指的值,数组是初级指针。

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2010-09-06 21:06
自由战士89
Rank: 5Rank: 5
等 级:职业侠客
帖 子:154
专家分:387
注 册:2010-9-2
收藏
得分:0 
似乎明白了,谢谢各位!
2010-09-06 21:32
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
看清值传递参数还是引用传递即可

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-09-06 23:41
lxmuyu
Rank: 1
等 级:新手上路
帖 子:2
专家分:1
注 册:2010-9-7
收藏
得分:0 
C是值传递,现在b[0]-->6,原来b[0]-->3,这样一搞原来的3还成垃圾了。。。。。
2010-09-07 09:21
快速回复:一个形参和实参的问题,我实在搞不清楚,请大家帮帮忙。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021590 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved