指针和引用作为函数参数传递
#include "stdafx.h"
#include <iostream>
using namespace std;
void reset( int *i )
{
//解引用
*i = 0;
}
void reset( int i )
{
//只改变了i的局部拷贝,并未改变实参的值
//调用函数,实质上将形参使用实参的值初始化, 将实参的值拷贝给i
i = 0;
}
void reset_(int &i)
{
//i是传给reset函数的对象的另外一个名字(而且可以避免拷贝,对于大型对象作为参数的情况可以提高效率)
i = 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
int p = 1 , q =1, w = 1;
reset(p);//int作为函数参数,不能改变p的值
reset( &q );//指针作为函数参数,能改变q的值
reset_(w);//形参i为对象w的引用,改变i即使改变w,能改变w的值
cout << "p = " << p << endl;
cout << "q = " << q << endl;
cout << "w = " << w << endl;
getchar();
return 0;
}