我们知道,通过swap函数交换两个变量的值的时候,需要进行引用传递:
void swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
当通过函数给指针赋值的时候,不能传递指针本身,需要传递指针的指针或者引用,否则函数调用后,实际上指针不会赋值例如:
static int a = 100;
void fun(int * ptr) {
ptr = &a;
}
int main() {
int * p = nullptr;
fun(p);
return 0;
}
fun调用后p仍然是nullptr。
正确的调用方法应该是:
static int a = 100;
void fun(int ** ptr) {
*ptr = &a;
}
int main() {
int * p = nullptr;
fun(&p);
return 0;
}
这样fun调用后p就可以取到变量a的地址啦。