为什么在参数传递中将引用变量视为指针?
int x;
void fun(&x);
void fun(int* y)
{
------some code----
}
在这里,变量x
的引用被传递给fun()
函数。 y
中的局部变量fun()
包含变量x
的引用,但y
被声明为指针。为什么?
答案 0 :(得分:5)
您误认为&x
不是“参考变量”。它是指向x
的指针,&
是 address-of 运算符,它返回给定参数的地址(即指针)。
这令人困惑,因为&
用于表示类型声明中的引用,但其含义在表达式中是不同的。
例如
int x;
int& y = x; // here & means reference because 'int&' is a type declaration
int* z = &x; // here & means address-of because '&x' is an expression
答案 1 :(得分:0)
&x 这行中的无聊(&x);
是“非参考变量”,即 x 变量的地址。
示例:
int y ;
int &z = y;
// here &z is reference variable(a reference must initialized when it is created)
答案 2 :(得分:0)
此处:void fun(&x);
您正在将变量x的地址(而不是引用)传递给void fun(int* y)
。
由于int* y
是一个指针,因此它指向x的地址。