将指针传递给 int*& 并得到编译错误

use*_*627 3 c++

为什么fun(p)有效而fun(&i)无效?

#include<iostream>

using namespace std;


void fun(int*& pp) 
{ 

} 

int main()
{
    int i;

    int *p;

    fun(p);

    fun(&i); // not working... why?
}
Run Code Online (Sandbox Code Playgroud)

M.M*_*M.M 6

int* & pp表示函数参数是非常量左值引用。这意味着参数必须是左值。

&i 不是左值,因此它不是非常量左值引用的有效参数。