将参考变量传递给函数

时间:2019-06-12 07:18:36

标签: c++

为什么在参数传递中将引用变量视为指针?

int x; 
void fun(&x);
void fun(int* y)
{
    ------some code----
}

在这里,变量x的引用被传递给fun()函数。 y中的局部变量fun()包含变量x的引用,但y被声明为指针。为什么?

3 个答案:

答案 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的地址。