这个问题是c++比较基础的指针问题了
实现方式1:
void fun(int** p)
{
cout<< "Fun:p=" << p <<endl;
cout<< "Fun:*p=" << *p <<endl;
cout<< "Fun:**p=" << **p <<endl;
delete *p;
*p = NULL;
}
int main()
{
int *a = new int(3);
cout<< "main:a=" << a <<endl;
fun(&a);
cout<< "main:a=" << a <<endl;
//这里a已经是NULL了
//cout << "*a="<<*a<<endl;
return 0;
}
实现方式2:
#define fun(p) do{ \
cout<< "Fun:p=" << p <<endl; \
cout<< "Fun:*p=" << *p <<endl; \
delete p; \
p = NULL; \
}while(0)
int main()
{
int *a = new int(3);
cout<< "main:a=" << a <<endl;
fun(a);
cout<< "main:a=" << a <<endl;
//这里a已经是NULL了
//cout << "*a="<<*a<<endl;
return 0;
}