直接看代码说明:
/********************************************************* * Desc:参数传递:使用引用传递指针和直接传递指针地址的区别 * Author:charley * DateTime:2010-12-7 11:00
* 编译环境:win7+vs2008
***********************************************************/
#include <iostream>
using namespace std;
/*
函数声明
*/
void swapByRef(int *&,int *&);
void swapByPoi(int *,int *);
int main(void)
{
    int i=10;
    int j=20;
    int *pi=&i; //pi指向i所在的内存地址
    int *pj=&j;//pj指向j所在的内存地址
    
	//通过引用传递参数,传递的是指针本身
    cout<<"调用swapByRef()之前:pi="<<pi<<",*pi="<<*pi<<";pj="<<pj<<",*pj="<<*pj<<endl;
    swapByRef(pi,pj);
    cout<<"调用swapByRef()之后:pi="<<pi<<",*pi="<<*pi<<";pj="<<pj<<",*pj="<<*pj<<endl;
    
	cout<<"**********************"<<endl;
	//通过指针来传递参数,传递的是指针地址
	cout<<"调用swapByPoi()之前:pi="<<pi<<",*pi="<<*pi<<";pj="<<pj<<",*pj="<<*pj<<endl;
    swapByPoi(&i,&j);
	//或者直接 swapByPoi(pi,pj);
    cout<<"调用swapByPoi()之后:pi="<<pi<<",*pi="<<*pi<<";pj="<<pj<<",*pj="<<*pj<<endl;
    getchar();
    return 0;
}
/*
通过引用传递参数:
参数为整型指针的引用,
引用是指针的一个别名,传递时不需要在内存中分配空间来接收参数
参考:swapByRef(int &v1,int &v2)
*/
void swapByRef(int *&v1,int *&v2)
{
	int *temp=v1;//指针赋值,指针执行的地址变化了
    v1=v2;
    v2=temp;
}
/*
通过指针来传递参数:
参数为整型指针变量
内存存需要为形参分配空间来接收传进来的指针地址
参考:swapByPoi(int v1,int v2)
*/
void swapByPoi(int *v1,int *v2)
{
	int temp=*v1; //操作指针指向的内容,指针执行的地址未变化
    *v1=*v2;
    *v2=temp;
}
执行结果:
从结果可以看出:
1. swapByRef方法是直接交换参数的指针执行的地址,所以指针指向的内容也换了
2. swapByPoi方法只是操作指针指向的内容,指针执行的地址未变化
    微软企业开发技术 | 移动开发(Google Android、Windows Mobile)技术| 嵌入式系统设计与开发 | JAVA开发
 
                    
                     
                    
                 
                    
                 
 
        
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号