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
请按任意键继续. . .
再次理解一下:函数调用不能改变实参
指针变量的值,但可以改变实参指针变
量所指向变量的值。
指针变量和指针变量所指向的值,
分清啊