#include<stdio.h>
class A
{
//...
};
void _create1(A* a)
{
a=new A();
}
void _create2(A* &a)
{
a=new A();
}
int main()
{
A* a=NULL;
printf("刚申请指针,地址为%d\n",a);
_create1(a);
printf("传入指针后,地址为%d\n",a);
_create2(a);
printf("传入指针引用后,地址为%d\n",a);
}
由上图可以看出,当将指针作为形参传入函数时,若在里面new了一块空间,离开该函数后,原本指针的值不会发生改变,这里是因为函数传的是该指针的副本,指针的副本在new后发生了改变,但原本的指针并不会发生改变。而传入引用时,函数里的a和主函数的a是一样的,所以new后地址发生了改变。