| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1084 人关注过本帖
标题:简单C语言请教
只看楼主 加入收藏
wang5306649
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2008-11-27
收藏
 问题点数:0 回复次数:10 
简单C语言请教
void increment(int x)
{
    x = x + 1;
}

int main(void)
{
    int i = 1, j = 2;
    increment(i); /* now i becomes 2 */
    increment(j); /* now j becomes 3 */
    return 0;
}

i和j变为2和3吗,大家讨论下!!十分简单!!
搜索更多相关主题的帖子: C语言 
2008-12-08 21:14
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
不会。因为值传递,形参的变化,是不会影响实参的。
呵呵,你输出一下,就知道了。
2008-12-08 21:31
jinboagg
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2008-3-9
收藏
得分:0 
没有错,顶。。
2008-12-08 21:36
wys371031357
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2008-11-20
收藏
得分:0 
请问:虽然是“值传递”,但是当指针变量做形参时,改变它的值,对应的实参值是要改变的吧?
2008-12-08 21:48
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
对。指针变量做形参,是“地址传递”,处理形参指向的变量,对应的实参值是要改变的。
2008-12-08 22:32
woshiyun
Rank: 1
等 级:新手上路
威 望:2
帖 子:348
专家分:0
注 册:2008-6-16
收藏
得分:0 
更正。
1.  C语言只有"值传递", 没有"地址传递"。
    也就是说,函数的实参永远不变。
2.  所谓"地址传递",只是利用指针改变目标的一种方式。
举个例子,大家眼中的"地址传递"基本上就是下面的样子
void increment(int * p)
{
    *p = *p + 1;
}
主函数的调用:
    int i = 1;
increment(&i);
   似乎传进去时i是1,出来变成了2,实参变了。
   错了。还是值传递!
   这时候的实参不是i,而是&i(0x0012ff7c),i的地址,所谓实参永远不变,就是说0x0012ff7c这个实参永远不变,至于i的值,则和形参,实参的概念一点关系都没有。
2008-12-08 22:49
godspeed_8
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-12-9
收藏
得分:0 
不可以的~
原因上面的朋友已经将得很清楚了~
即函数调用时 参数的传递方式问题~
可以用指针或者引用作为函数的参数~~~
2008-12-09 11:30
京广铁路
Rank: 1
等 级:新手上路
威 望:1
帖 子:119
专家分:0
注 册:2008-11-3
收藏
得分:0 
2008-12-09 13:38
fgd
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-12-8
收藏
得分:0 
调用函数没返回值行,吗??
2008-12-09 14:21
fgd
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-12-8
收藏
得分:0 
我的QQ空间http://user.qzone.  有事留言
2008-12-09 14:22
快速回复:简单C语言请教
数据加载中...
 
   



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

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