動态數組是指在編譯時不能确定數組長度,程式在運作時需要動态配置設定記憶體空間的數組。
實作變長數組最簡單的是變長一維數組,你可以這樣做:
1
2
3
4
5
6
7
8
9
10
11
12
13
<code>//檔案名:array01.cpp</code>
<code>#include<iostream></code>
<code>using namespace std;</code>
<code>int</code> <code>main(){</code>
<code>int</code> <code>len;</code>
<code>cin>>len;</code><code>//用指針p指向new動态配置設定的長度為len*sizeof(int)的記憶體空間</code>
<code>int</code><code>*p=</code><code>new</code> <code>int</code><code>[len]</code>
<code>;...........delete[]p;</code>
<code>return0;</code>
<code>}</code>
注意int*p=newint[len];這一句,你不能這樣做:int p[len];C++編譯器會報錯說len的大小不能确定,因為用這種形式聲明數組,數組的大小需要在編譯時确定。
而且這樣也不行:
int p[]=new int[len];
編譯器會說不能把int*型轉化為int[]型,因為用new開辟了一段記憶體空間後會傳回這段記憶體的首位址,是以要把這個位址賦給一個指針,是以要用int*p=new int[len];
array01.cpp實作了一個變長的一維數組,但是要養成一個好習慣,就是注意要登出指針p,使程式釋放用new開辟的記憶體空間。
當然使用C++标準模版庫(STL)中的vector(向量)也可以實作變長數組:
14
15
16
17
18
<code>//檔案名:array02.cpp</code>
<code>#include<vector></code>
<code>int</code> <code>len;</code>
<code>cin>>len;</code>
<code>vector<</code><code>int</code><code>>array(len);</code><code>//聲明變長數組</code>
<code>for</code><code>(</code><code>int</code> <code>i=</code><code>0</code><code>;i<len;i++)</code>
<code>array[i]=i;</code>
<code>cout<<array[i]<<</code><code>"\t"</code><code>;</code>
19
20
21
<code>#include <iostream></code>
<code>int</code> <code>main()</code>
<code>{</code>
<code> </code><code>int</code> <code>** arr;</code>
<code> </code><code>arr = </code><code>new</code> <code>int</code><code>* [</code><code>3</code><code>];</code>
<code> </code><code>for</code> <code>(</code><code>int</code> <code>k=</code><code>0</code><code>; k<</code><code>3</code><code>; k++)</code>
<code> </code><code>{</code>
<code> </code><code>arr[k] = </code><code>new</code> <code>int</code><code>;</code>
<code> </code><code>cin>>*arr[k]; </code>
<code> </code><code>}</code>
<code> </code><code>cout<<*arr[k]<<</code><code>" "</code><code>;</code>
<code> </code><code>cout<<endl;</code>
<code> </code><code>delete arr[k];</code>
<code> </code><code>delete []arr;</code>
<code> </code><code>return</code> <code>0</code><code>;</code>
<code></code>
本文轉自朱先忠老師51CTO部落格,原文連結: http://blog.51cto.com/zhuxianzhong/1531776,如需轉載請自行聯系原作者