陣列一維2維3維動態申請及用Vector的表示方法

2021-05-27 09:17:56 字數 1759 閱讀 6021

1. 變長一維陣列

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

#include

using namespace std;

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 = new int*[num1];

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

for(int i=0; ip[i] = new int[num2];

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

#include

#include

using namespace std;

int main()

cout<}

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

for(int m=0;mdelete 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 (int i=0;i

delete p3[i];

}delete p3;

}以下是vector實現**:

#include

#include

using namespace std;

void main()

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

以下是程式**:

#include

using namespace std;

void main()

cout<<"二維陣列"cout<}

delete p2;

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

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

for (k=0;kfor (i=0;ifor (j=0;j

cout<<"三維陣列"cout<}

delete p3;

c c 動態申請一維,二維陣列

指標變數名 new 型別名 下標表示式 下標表示式 不是常量表示式,即它的值不必在編譯時確定,可以在執行時確定。這就是堆的乙個非常顯著的特點,有的時候程式設計師本身都不知道要申請能夠多少記憶體的時候,堆就變的格外有用。1.動態申請一維陣列 int p new int n if p null retu...

C語言動態申請一維陣列 二維陣列

首先 新增 include include int a int n scanf d n a int malloc n sizeof int free a 這樣就動態分配了陣列a n 陣列的長度n可輸入確定,也可用程式中的變數確定。但要注意程式結束後要用free 將其釋放,否則記憶體會洩漏。驗證一下 ...

一維陣列及二維陣列

c語言一維陣列 float arr1 3 oc一維陣列 其實oc是沒有一維陣列二維陣列的概念的,但是可以實現一維陣列和二維陣列的功能 nsarray array1 nsarray arraywithobjects 2.5,3.6,4.7 nil c 語言二維陣列 float indexarray 2...