二維陣列的動態建立

2021-07-03 03:00:44 字數 1897 閱讀 1359

1. 變長一維陣列

這裡說的變長陣列是指在編譯時不能確定陣列長度,程式在執行時需要動態分配記憶體空間的陣列。實現變長陣列最簡單的是變長一維陣列,你可以這樣做:

#include

using namespacestd;

int main()

注意int *p=new int[len];這一句,你不能這樣做: int p[len]; c++編譯器會報錯說len的大小不能確定,因為用這種形式宣告陣列,陣列的大小需要在編譯時確定。而且這樣也不行: int p=new int[len];編譯器會說不能把int*型轉化為int型,因為用new開闢了一段記憶體空間後會返回這段記憶體的首位址,所以要把這個位址賦給乙個指標,所以要用int *p=new int[len];

以上程式實現了乙個變長的一維陣列,但是要養成乙個好習慣,就是注意要登出指標p,使程式釋放用new開闢的記憶體空間。

當然使用c++標準模版庫(stl)中的vector(向量)也可以實現變長陣列:

#include

#include

using namespace std;

int main()

return 0; }

2. 變長二維陣列

用c++實現變長二維陣列時可以採用兩種方法:雙指標方法和使用stl中vector(向量)的方法。

首先介紹一下雙指標方法,在這裡雙指標就是指像指標的指標,比如你可以這樣宣告乙個陣列:

int **p = newint*[num1];

而對每乙個*p(一共num1個*p)申請一組記憶體空間:

for(int i=0;i

p[i] = new int[num2];

其中,num1是行數,num2是陣列的列數。測試的源程式如下:

#include

#include

using namespace std;

int main()

cout< }

//釋放二維陣列占用的空間

for(int m=0;m

delete p[m];

delete p;

return 0; }

用vector(向量)實現二維陣列,以下給出源程式:

#include

#include

#include

using namespace std;

int main()

return 0; }

3. 變長三維陣列

#include

using namespace std;

void main()

} }

for (int k=0;k

cout< }

for (inti=0;i

delete p3[i]; }

delete p3; }

以下是vector實現**:

#include

#include

using namespace std;

void main()

4. 用一維動態陣列表示二維、三維動態陣列

以下是程式**:

#include

using namespace std;

void main()

cout<<"二維陣列"<

for (i=0;i

cout< }

delete p2;

int *p3;   //將表示三維陣列

p3=new int[m*n*l];

for (k=0;k

for (i=0;i

for (j=0;j

cout<<"三維陣列"<

for (intk=0;k

cout< }

delete p3; }

動態建立二維陣列

c 中用new動態建立二維陣列的格式一般是這樣 type p n new type n 其中,type是某種型別,n是二維陣列的列數。採用這種格式,列數必須指出,而行數無需指定。在這裡,p的型別是type n 即是指向乙個有n列元素陣列的指標。還有一種方法,可以不指定陣列的列數 int p p ne...

動態建立二維陣列

1.c 中 使用陣列指標,分配乙個 指標陣列,將其首位址儲存在b中,然後再為指標陣列的每個元素分配乙個陣列 int b new int row 分配乙個指標陣列,將其首位址儲存在b中 for i 0 ib null 例 動態建立二維陣列 void main int col,row cin row c...

建立動態二維陣列

法1既然二維陣列也可以稱為矩陣,那麼我們就可以給二維陣列的每一行開闢一塊空間,然後再用一塊空間把這些空間的行存放和管理起來,這塊空間顯然就是乙個指標陣列,陣列的每乙個元素都是乙個指向乙個陣列的位址。int arr null int row 5 用於表示行數 int col 5 用於表示列數 arr ...