<分区>
Possible Duplicate:
Pointer vs. Reference
大家好,
我在尝试探索时遇到了引用运算符的问题。考虑如下通过引用交换代码进行的正常调用,它按预期工作
#include<iostream>
using namespace std;
void test(int *a,int *b){
int temp;
temp = *a;
*a= *b;
*b= temp;
cout<<"\n Func a="<<*a << " b=" << *b;
}
int main()
{
int a=5,b =3;
cout<<"\n Main a="<<a << " b=" << b;
test(&a,&b);
cout<<"\n Main again a="<<a << " b=" << b;
return 0;
}
另一方面,下面的代码也进行相同类型的交换并产生完全相同的结果。
#include<iostream>
using namespace std;
void test(int &a,int &b){
int temp;
temp = a;
a= b;
b= temp;
cout<<"\n Func a="<<a << " b=" << b;
}
int main()
{
int a=5,b =3;
cout<<"\n Main a="<<a << " b=" << b;
test(a,b);
cout<<"\n Main again a="<<a << " b=" << b;
return 0;
}
有人能解释一下第二个例子中的函数调用有何不同吗(第一部分我很乐意将地址作为引用,但在第二个例子中会发生什么)?
在同一行中,希望在赋值语句中也发生同样的情况,即
int a=5;
int &b=a;
提前致谢。
编辑:
感谢您的回复。但我的疑问是内存中到底发生了什么
int *pointer=&x
存储地址但是当我们这样做时会发生什么
int &点=x。