下面先看两个例子:
主函数:
int main()
{
int *ary=NULL;
cout<<"动态分配前arry add:"<<ary<<endl;
App(ary,10);
cout<<"动态分配后arry add:"<<ary<<endl;
return 1;
}
指针作为函数参数的时候,其实就传入了ary的地址
void App_new(int* pa,int len)
{
pa=new int [len];
cout<<"pa addr"<<pa<<endl;
if(pa==NULL)
{
cout<<"faiure\n";
return;
}
for(int i=0;i<len;i++)
{
pa[i]=0;
}
}
指针作为参数,形参有自己的空间和地址,pa在函数App_new中动态分配的空间在函数结束的时候会释放。
返回主函数后,讲无法再次访问这个数组。
void App(int* &pa,int len)//指针引用
{
pa=new int [len];
cout<<"pa addr"<<pa<<endl;
if(pa==NULL)
{
cout<<"faiure\n";
return;
}
pa[0]=0;
for(int i=0;i<len;i++)
{
pa[i]=0;
}
}
而引用作为参数,其地址与实参地址一样,直接在ary的地址上开辟空间。
以上是个人理解,如有不足,多多指教。