Chinaunix首页 | 论坛 | 博客
  • 博客访问: 181751
  • 博文数量: 20
  • 博客积分: 1847
  • 博客等级: 上尉
  • 技术积分: 245
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-02 23:39
文章分类

全部博文(20)

文章存档

2012年(3)

2011年(11)

2010年(6)

我的朋友

分类: C/C++

2010-08-07 18:43:06

一直以来对值传递、引用传递、地址传递都没有彻底的了解,今天再次通过程序详细的描述一下
#include
using namespace std;
void swap(int &a,int &b)   //引用传递
{
 int temp;
 temp =a;
 a = b;
 b = temp;
  }
void swap(int *a,int *b)  //地址传递
{
 int temp;
 temp = *a;
 *a = *b;
 *b =temp;
   }
void swap1(int p,int q) //值传递
{
 int temp = p;
 p = q;
 q = temp;
}
int main()
{
 int x =20;
 int y =24;
 int m =10;
 int n =11;
 swap(&x,&y);   /*地址传递*/
 swap(m,n);     /*引用传递*/
 int i =20;
 int j =24;
 swap1(i,j);    /*只改变栈中的值,主程序中的值并未改变*/
 cout<  cout< cout< return 0;
}
大家发现没有,值传递和引用传递函数内部几乎都是一样的,引用传递相对值传递和地址传递的好处在于在不需要另外开辟一块内存空间,而地址传递和值传递都需要另外开辟空间,从效率上来讲,引用传递的效率比另外两个都要高,对于值传递,它只改变栈内的值,主程序中的值其实并未改变,大家使用的的时候要多加小心。
阅读(5499) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~