下面先看兩個例子:
主函數:
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的地址上開闢空間。
以上是個人理解,如有不足,多多指教。