指針參數和指針引用參數的在C/C++中的區別

下面先看兩個例子:
主函數:

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的地址上開闢空間。
在這裏插入圖片描述
以上是個人理解,如有不足,多多指教。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章