#include <iostream>
using namespace std;
void Func1(int* p);
void Func2(int*& p);
int b = 2;
int main()
{
int a = 1;
int* p = &a;
cout<<"a的地址:"<<&a<<endl;
cout<<"b的地址:"<<&b<<endl;
Func1(p);
cout<<p<<endl;
Func2(p);
cout<<p<<endl;
return 0;
}
void Func1(int* p)
{
p = &b;
cout<<"调用f1后"<<p<<endl;
}
void Func2(int*& p)
{
p = &b;
}
// 这里调用Func1以后p依然指向a的地址,说明当func1(p)时,系统重新分配了一个内粗地址块,来放传进来的p(a的地址)的地址
//这里调用Func2后p就指向b的地址了,这里说明,系统没有重新分配一个内存地址块,而是直接饮用传进来的p的地址(即a的地址)