二維陣列動態開闢與傳參

smile_zhangwj發表於2018-04-19

    這裡簡單介紹動態二維陣列的開闢與釋放,以及二維陣列傳參的幾種方法

動態二維陣列的開闢與釋放

     方法1:直接開闢一維陣列
                eg:   int *p = new int[10*10];//當成一維陣列進行開闢 
                訪問資料的方式 :通過a[i*10+j] 來訪問第(i*10+j)個資料。
                優缺點:訪問資料很方便,且new的次數少,釋放空間容易,但是不便於理解,且使用時需要轉化。
void Test()
{
	int *p = new int[10*10];//直接開闢一維陣列
	//初始化
	for(size_t i=0; i<10; i++)
	{
		for(size_t j=0; j<10; j++)
		{
			p[i*10+j] = i*j;  //通過a[i*10+j]來訪問第(i*10+j)個資料
		}
	}
	//訪問資料
	for(size_t i=0; i<10; i++)
	{
		for(size_t j=0; j<10; j++)
		{
			cout<<p[i*10+j]<<" ";  //通過a[i*10+j]來訪問第(i*10+j)個資料
		}
		cout<<endl;
	}

	delete[] p; //釋放
}
 方法2:一維指標陣列。(指標陣列+一維指標)
  eg:   int** maze = new int*[M];
                       for(int i=0; i<M; i++)
                       {
                            maze[i] = new int[N];
                       }  
               訪問資料的方式:直接通過a[i][j]訪問第i行第j列的資料。
               優缺點:通過a[i][j]訪問資料容易,但new的次數太多釋放空間不容易。
void Test()
{
	//開闢空間
	int ** p = new int*[10];
	for(size_t i=0; i<10; i++)
	{
		p[i] = new int[10];
	}

	//訪問通過p[i][j]訪問
	for(size_t i=0; i<10; i++)
	{
		for(size_t j=0; j<10; j++)
		{
			p[i][j] = i*j;
			cout<<p[i][j]<<" ";
		}
		cout<<endl;
	}
	//釋放
	for(size_t i=0; i<10; i++)
	{
		delete[] p[i];
	}
	delete[] p;
}
 二維陣列的傳參方法
       方法1:形參為二維陣列並給定第二維的長度  
                    形參: maze[][5] ----- 實參: maze
void InitAPrint(int p[][10]) //形參闢[][10]
{
	//訪問通過p[i][j]訪問
	for(size_t i=0; i<10; i++)
	{
		for(size_t j=0; j<10; j++)
		{
			p[i][j] = i*j;
			cout<<p[i][j]<<" ";
		}
		cout<<endl;
	}
}

void Test()
{
	int arr[10][10];

	InitAPrint(arr); //實參arr
}

     方法2: 形參為指向陣列的指標並給出陣列的長度  
                形參:(*maze)[5] ----  實參:maze           
void InitAPrint(int(*p)[10]) //形參闢(*)p[10]
{
	//訪問通過p[i][j]訪問
	for(size_t i=0; i<10; i++)
	{
		for(size_t j=0; j<10; j++)
		{
			p[i][j] = i*j;
			cout<<p[i][j]<<" ";
		}
		cout<<endl;
	}
}

void Test()
{
	int arr[10][10];

	InitAPrint(arr); //實參arr
}

這裡僅列出兩種傳參方法,更多方法詳見:https://blog.csdn.net/gqb_driver/article/details/8886687       






 


  

    

           

相關文章