#include<iostream>
using namespace std;
void modifyPointer(int*);
void modifyPointer(int**);
int main(){
int *pointer;
int n = 100;
pointer = &n;
modifyPointer(pointer);
cout << "调用modifyPointer(int*)" << *pointer << endl;
modifyPointer(&pointer);
cout << "调用modifyPointer(int**)" << *pointer;
return 0;
}
void modifyPointer(int *pointer){
int k = 1;
pointer = &k;
}
void modifyPointer(int **pointer){
int k = 1;
*pointer = &k;
}
/**
1、将指针 pointer 作为参数传递给函数 modifyPointer(int* pointer) 时,实际传递的是指针的值(&n),而不是指针本身(&pointer)
---->函数 modifyPointer(int* pointer)也会新建一个int *pointer 的局部变量,来接收 &n(即是 int *pointer;pointer = &n;的简写)
所以在 modifyPointer(int* pointer) 中修改 pointer (pointer = &k;)时修改的是局部的 pointer,而不是从 main 函数传递过来的
全局pointer,所以不会影响 main 函数中的 pointer
2、将指针 pointer 作为参数传递给函数 modifyPointer(int** pointer) 时,实际传递的值是(&pointer),函数modifyPointer(int** pointer)
会新建一个 int **pointer(局部) 的局部变量来接收 &pointer(全局)(即是 int **pointer(局部);pointer(局部) = &pointer(全局)
,-----此时,pointer(局部) == &pointer(全局);*pointer(局部) == pointer(全局) == &n;**pointer(局部) == *pointer(全局)== n)
当执行 *pointer = &k时,实际执行的是 pointer(全局) = &k;所以此时修改局部的 pointer 也修改了 main 函数传递过来的全局的 pointer,
*/