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