1.變長一維陣列這裡說的變長陣列是指在編譯時不能確定陣列長度,程式在執行時需要動態分配記憶體空間的陣列。實現變長陣列最簡單的是變長一維陣列,你可以這樣做:
1://檔名:array01.cpp
2:#include
3:usingnamespacestd;
4:intmain()
5:{
6:intlen;
7:cin>>len;
8://用指標p指向new動態分配的長度為len*sizeof(int)的記憶體空間
9:int*p=newint[len];
10:...........
11:delete[]p;
12:return0;
13:}
注意int*p=newint[len];這一句,你不能這樣做:intp[len];c++編譯器會報錯說len的大小不能確定,因為用這種形式宣告陣列,陣列的大小需要在編譯時確定。而且這樣也不行:intp[]=newint[len];編譯器會說不能把int*型轉化為int[]型,因為用new開闢了一段記憶體空間後會返回這段記憶體的首地址,所以要把這個地址賦給一個指標,所以要用int*p=newint[len];array01.cpp實現了一個變長的一維陣列,但是要養成一個好習慣,就是注意要登出指標p,使程式釋放用new開闢的記憶體空間。當然使用c++標準模版庫(stl)中的vector(向量)也可以實現變長陣列:
1://檔名:array02.cpp
3:#include
4:usingnamespacestd;
5:intmain()
6:{
7:intlen;
8:cin>>len;
9:vector
10:for(inti=0;i
1.變長一維陣列這裡說的變長陣列是指在編譯時不能確定陣列長度,程式在執行時需要動態分配記憶體空間的陣列。實現變長陣列最簡單的是變長一維陣列,你可以這樣做:
1://檔名:array01.cpp
2:#include
3:usingnamespacestd;
4:intmain()
5:{
6:intlen;
7:cin>>len;
8://用指標p指向new動態分配的長度為len*sizeof(int)的記憶體空間
9:int*p=newint[len];
10:...........
11:delete[]p;
12:return0;
13:}
注意int*p=newint[len];這一句,你不能這樣做:intp[len];c++編譯器會報錯說len的大小不能確定,因為用這種形式宣告陣列,陣列的大小需要在編譯時確定。而且這樣也不行:intp[]=newint[len];編譯器會說不能把int*型轉化為int[]型,因為用new開闢了一段記憶體空間後會返回這段記憶體的首地址,所以要把這個地址賦給一個指標,所以要用int*p=newint[len];array01.cpp實現了一個變長的一維陣列,但是要養成一個好習慣,就是注意要登出指標p,使程式釋放用new開闢的記憶體空間。當然使用c++標準模版庫(stl)中的vector(向量)也可以實現變長陣列:
1://檔名:array02.cpp
2:#include
3:#include
4:usingnamespacestd;
5:intmain()
6:{
7:intlen;
8:cin>>len;
9:vector
10:for(inti=0;i