比如:
changeNum(int* p)
changeNum(int*& p)
两者有什么区别呢?
如果不使用&,那么在函数中会自动调用指针的构造函数,构造一个临时指针,这个指针和传进来的指针向同一个位置。然后可以通过这个临时指针改变该位置的数值。
但如果把临时指针指向另一个位置时,并不会改变传进来的指针指向的位置。因为它们两个存放的位置不同,是两个独立的指针。
如果使用&,则传进来的是指针的地址,这时p就是传进来的指针,而不是新建的临时指针。如果改变p指针指向的对象,那么也就改变了传进来的指针指向的地址。
原文地址
在原文基础上做了一点改动,以便自己更容易理解。