指针和引用作为函数参数传递

#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; }
原文地址:https://www.cnblogs.com/voyagee/p/8033939.html