C++指针形参和引用形参的区别测试

//指针参数测试方法1

void PP_Change1(int *a,int *b)

{  

  //传进来的是指针变量中的指针副本,在被掉函数中的形参有自己的内存,接受由实参传过来的值,  

  //值的交换是无法改变实参的  

  int *p;  

  p = a;  

  a=b;  

  b=p;  

  //但如果改变实参所指向的值,那就相互影响了,因为操作的是同一份内存,所以说是要考虑安全性,这点很重要

  //*a=1000;

}

//指针参数测试方法2

void PP_Change2(int *&a,int *&b)

{  

  int *p;

  p = a;

  a=b;  

  b=p;

}

//指针测试

void PP_Change() {  

  //测试方法1

   cout<<"测试方法1"<<endl;  

  int av,bv;  

  int *a=&av,*b=&bv;

    cout<<"输入a"<<endl;  

  cin>>*a;

    cout<<"输入b"<<endl;  

  cin>>*b;  

  cout<<"*交换前"<<endl;  

  cout<<"a: "<<*a<<" b: "<<*b<<endl;  

  PP_Change1(a,b);  

  cout<<"*交换后"<<endl;  

  cout<<"a: "<<*a<<" b: "<<*b<<endl;

    //测试方法2  

  cout<<"测试方法2"<<endl;

   cout<<"输入a"<<endl;

   cin>>*a;

   cout<<"输入b"<<endl;

   cin>>*b;  

  cout<<"*交换前"<<endl;  

  cout<<"a: "<<*a<<" b: "<<*b<<endl;  

  PP_Change2(a,b);  

  cout<<"*交换后"<<endl;  

  cout<<"a: "<<*a<<" b: "<<*b<<endl;

}

 

测试结果:

测试方法1
输入a
12
输入b
2
*交换前
a: 12 b: 2
*交换后
a: 12 b: 2
测试方法2
输入a
12
输入b
2
*交换前
a: 12 b: 2
*交换后
a: 2 b: 12
请按任意键继续. . .

 

 

再次理解一下:函数调用不能改变实参

指针变量的值,可以改变实参指针变

量所指向变量的

 

   指针变量和指针变量所指向的值,

分清

posted @ 2013-05-11 16:42  randroid  阅读(303)  评论(0编辑  收藏  举报