- 靜态數組:
int a[20];
int b[] = {1, 2, 3}
複制
- 靜态數組的長度為常量,在棧中配置設定記憶體空間,會自動釋放。使用sizeof時,計算的是整個數組的位元組大小。
- 動态數組:
int len = 20;
int *a = new int[len];
delete a;
複制
動态數組在堆中配置設定記憶體,必須手動釋放。使用sizeof時,計算的是指針變量所占記憶體的位元組大小。
在使用時,如果數組大小已經确定,可以使用靜态數組,效率較高;如果數組大小需要在運作時确定(比如使用者輸入,函數參數傳遞等),則使用動态數組。
此外,如果需要在函數中傳回數組,則必須注意用靜态數組時,由于記憶體在棧中配置設定,函數執行完畢時會自動銷毀,是以傳回一個靜态數組變量是無意義的;使用動态數組就可以傳回,并在不需要時注意delete釋放堆中的記憶體。