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 ...