二維陣列動態開闢與傳參
這裡簡單介紹動態二維陣列的開闢與釋放,以及二維陣列傳參的幾種方法
動態二維陣列的開闢與釋放
方法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
相關文章
- 二維陣列傳參陣列
- 二維陣列傳參做形參陣列
- C++動態建立二維陣列,二維陣列指標,以及動態二維陣列函式傳遞C++陣列指標函式
- 二維陣列傳參要點陣列
- 淺談二維陣列在傳參中的使用陣列
- PHP中二維陣列與多維陣列PHP陣列
- 陣列004 動態建立一維陣列陣列
- JavaSE 陣列:一維陣列&二維陣列Java陣列
- 二維陣列與指標陣列指標
- 指標陣列和陣列指標與二維陣列指標陣列
- C++容器巢狀實現動態二維陣列C++巢狀陣列
- 二維陣列陣列
- js 一維陣列轉二維陣列JS陣列
- js 二維陣列轉一維陣列JS陣列
- PHP二維陣列轉一維陣列PHP陣列
- c++ -- 二維陣列引數傳遞C++陣列
- JavaScript --二維陣列查詢一維陣列JavaScript陣列
- vector 二維陣列陣列
- Java二維陣列Java陣列
- JavaScript二維陣列JavaScript陣列
- JavaScript 二維陣列JavaScript陣列
- 二維陣列排序陣列排序
- 二維陣列的動態記憶體分配和釋放 (轉)陣列記憶體
- JavaScript二維陣列轉換成一維陣列JavaScript陣列
- Rust與Java程式碼比較:將二維陣列轉為三維陣列RustJava陣列
- C/C++ 二維陣列的理解(多維陣列)C++陣列
- [JAVA] Java 陣列、多維陣列,動態、靜態初始化,陣列JVM記憶體模型分析Java陣列JVM記憶體模型
- 二維陣列和稀疏陣列互轉陣列
- 二級指標,二維陣列函式引數傳遞指標陣列函式
- 二維陣列查詢陣列
- php 二維陣列排序PHP陣列排序
- 二維陣列行排序陣列排序
- perl操作二維陣列陣列
- 二維樹狀陣列陣列
- 二維陣列練習陣列
- Java 二維陣列轉一維Java陣列
- 動態陣列陣列
- DP 動態規劃入門 一維陣列動態規劃陣列