两个问题:1)如何将参考变量存储在mem中?
int a=1;
int &b=a;
cout<<&a<<endl<<&b;
Run Code Online (Sandbox Code Playgroud)
a和b的地址是一样的吗?所以,b作为参考变量在mem中没有空格?!
2)refrence变量只能在定义时初始化,但是如果它可以初始化多次?如何编写代码(只是为了告诉表单本身)?
int a=c=1;
int &b=a;
b=c;//i know this will change the source value of a,not re-assign the ref b,so
&b=c;//will this be ok?
Run Code Online (Sandbox Code Playgroud)
语言没有指定如何存储引用,但是大多数编译器会在内部将它们实现为指针.
无论如何,因为作为程序员,引用对你来说是"透明的",所以当你写作时,你&b实际上是在获取引用的地址,而不是引用.这就是为什么你得到相同的地址.
类似地,写入&b=c对引用本身没有任何作用,但是将值写入作为(无意义的事物)c地址的指针a.它是一样的int* ptr = &b; ptr = c;
重要的是要理解&为"地址"和&参考类型表示法是两个不同的东西:
int a;
int* ptr = &a; // <--- taking (and storing) the address of `a`, i.e. a pointer
int& b = a; // <--- declares a reference to `a`; `b` now behaves like `a`
// Two entirely different meanings of `&`.
Run Code Online (Sandbox Code Playgroud)
还有第三个含义&,即按位AND.
无论如何,如果你想重新安排一个参考,你运气不好.你根本做不到.