在线等待,一个C++中引用的问题..

来源:百度知道 编辑:UC知道 时间:2024/05/04 11:30:11
void swap(int &p1, int &p2) //此处函数的形参p1, p2都是引用
{ int p; p=p1; p1=p2; p2=p; }

main( )
{
int a,b;
cin>>a>>b; //输入a,b两变量的值
swap(a,b); //直接以变量a和b作为实参调用swap函数
cout<<a<< \' \' <<b; //输出结果
}

问题:如果void swap(int &p1, int &p2)写成void swap(int p1, int p2)会出现什么样的情况? 对不对?
请前辈们帮忙解答一下. 请详细一点,后生感激不尽..

不对了用void swap(int p1, int p2)
p1与p2的值没交换的
void swap(int &p1, int &p2)运行时相当于数组的引用,mian中p1与swap中的p1指向同一个内存地址,所以在swap中把p1改变后,main中的p1也会改变的。
swap(int p1, int p2)运行时,会再给swap中的p1分配一个内存空间,swap运行完时内存会回收,在swap中改变p1,main中的p1 还是原来的值,并没有改变

报错呗,p1,p2未定义

void swap(int &p1, int &p2) //此处函数的形参p1, p2都是引用 ,引用c++才支持的语法,表示不是把实参复制过来,而是传递实参的地址,也就是说可以交换p1p2的值,

写成void swap(int p1, int p2)不会报错但不能交换p1p2的值,
{ int p; p=p1; p1=p2; p2=p; }

main( )
{
int a,b;
cin>>a>>b; //输入a,b两变量的值
swap(a,b); //直接以变量a和b作为实参调用swap函数
cout<<a<< \' \' <<b; //输出结果
}