What does *& mean in a function parameter

前端 未结 5 1096
春和景丽
春和景丽 2020-12-03 14:43

If I have a function that takes int *&, what does it means? How can I pass just an int or a pointer int to that function?

function(int *&am         


        
5条回答
  •  盖世英雄少女心
    2020-12-03 15:38

    It means a reference to a pointer to an int. In other words, the function can change the parameter to point to something else.

    To pass a variable in, just pass an int*. As awoodland points out, what's passed in must be an l-value.

    Edit:

    To build on awoodland's example:

    #include 
    
    void foo(int*& var)
    {
        delete var;
        var = new int;
    }
    
    int main(int argc, char* argv[])
    {
        int* var = NULL;
    
        std::cout << var << std::endl;
    
        foo(var);   // this function can/will change the value of the pointer
    
        std::cout << var << std::endl;
    
        delete var;
    
        return 0;
    }
    

提交回复
热议问题