Confusion over C++ pointer and reference topic

后端 未结 2 1470
甜味超标
甜味超标 2021-01-15 05:44

What is the difference between the following parameter passing mechanisms in C++?

void foo(int &x) 
void foo(int *x)
void foo(int **x)
void foo(int *&am         


        
2条回答
  •  傲寒
    傲寒 (楼主)
    2021-01-15 05:53

    void foo(int &x)
    

    passes a reference to an integer. This is an input/output parameter and can be used like a regular integer in the function. Value gets passed back to the caller.


    void food(int *x)
    

    passes a pointer to an integer. This is an input/output parameter but it's used like a pointer and has to be dereferenced (e.g. *x = 100;). You also need to check that it's not null.


    void foo(int **x)
    

    passes a pointer to a pointer to an integer. This is an input/output parameter of type integer pointer. Use this if you want to change the value of an integer point (e.g. *x = &m_myInt;).


    void foo(int *&x)
    

    passes a reference to a pointer to an integer. Like above but no need to dereference the pointer variable (e.g. x = &m_myInt;).


    Hope that makes sense. I would recommend using typedefs to simplify the use of pointers and reference symbols.

提交回复
热议问题