我有这个功能:
void fun(int x, int& sum)
{
sum = x * x;
}
出了什么问题:
fun(4, &y);
fun(4,5);
答案 0 :(得分:0)
&y
不是参考。它是变量y
的指针。如果你想通过引用传递它,你就这样传递它:
fun(4, y);
答案 1 :(得分:0)
在此函数调用中
fun(4, &y);
参数y
具有指针类型,而相应参数引用int
。
如果y
定义为
int y;
然后有效的函数调用看起来像
fun(4, y);
此函数调用无效
fun(4,5);
因为第二个参数是一个不是lvalue
的临时表达式。因此,它可能被约束为恒定参考。但是,相应的参数被声明为非常量引用,因为函数中的参数已更改。因此编译器将发出诊断消息。