| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 512 人关注过本帖
标题:关于引用的问题 看了好久不明白
只看楼主 加入收藏
zrjlh
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-6-7
收藏
 问题点数:0 回复次数:4 
关于引用的问题 看了好久不明白
#include <iostream>
using namespace std;
void swap(int a ,int b)
{
int team;
team=a;
a=b;
b=team;
}
int main()
{
int i=3, j=5;
swap(i,j);
cout <<i<<","<<j<<endl;
return 0;
}
小弟刚开始学习C++ 看到引用那里 有这个例题
小弟看不懂为什么调用
void swap(int a ,int b)
{
int team;
team=a;
a=b;
b=team;
}
这个函数了 为什么 a,b的值没变啊
搜索更多相关主题的帖子: include return 
2007-07-07 10:07
cclearner
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2007-6-28
收藏
得分:0 
你的书上没有画个图啥的仔细说一下?
与引用做对比的

好人哪,一群好人哪!!!!!!
2007-07-07 11:09
Arcticanimal
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:341
专家分:20
注 册:2007-3-17
收藏
得分:0 
回复:(zrjlh)关于引用的问题 看了好久不明白
C++有几种传参方式:
1.直接传值 exp: void function(int param);
2.传指针 exp: void function(int* param);
3.传引用 exp: void function(int & param);
直接传值就是把实参的值 复制一份 然后传给行参,因此对形参的改变只是改变复制过来的对象(即形参),不改变原来的对象(即实参);
传指针是把实参的地址传给形参,实际上是直接传参,只不过这个参数是指针;
传引用就是让形参是实参的引用 对形参的任何操作就是对实参的操作,实际上也是传指针。

try new catch
2007-07-07 11:27
realnaoko
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-6-22
收藏
得分:0 

这里做的是传值引用,
i,j 只把值给了 a,b
a,b换值与i,j无关.


2007-07-07 13:46
sy_141618
Rank: 1
等 级:新手上路
威 望:1
帖 子:68
专家分:0
注 册:2006-6-18
收藏
得分:0 
以下是引用Arcticanimal在2007-7-7 11:27:02的发言:
C++有几种传参方式:
1.直接传值 exp: void function(int param);
2.传指针 exp: void function(int* param);
3.传引用 exp: void function(int & param);
直接传值就是把实参的值 复制一份 然后传给行参,因此对形参的改变只是改变复制过来的对象(即形参),不改变原来的对象(即实参);
传指针是把实参的地址传给形参,实际上是直接传参,只不过这个参数是指针;
传引用就是让形参是实参的引用 对形参的任何操作就是对实参的操作,实际上也是传指针。

他说得很清楚哦~你的程序里等于把形参作为实参的一个副本,SWAP只是在操作形参。
要真正改变传递进去的实参的话,得把它的地址给传进去,就等于传递指针了,这时候形参有的是地址,地址没虚的,是内存中客观存在的,所以改变这个地址所代表的数据就行了,也就是改变了实参。

2007-07-07 14:06
快速回复:关于引用的问题 看了好久不明白
数据加载中...
 
   



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

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