陣列與動態陣列的區別

2021-09-30 20:43:32 字數 345 閱讀 2674

眾所周知,陣列的長度是不可變的,那麼為什麼動態陣列長度可隨意更改呢?

這個要從記憶體中的資料模型開始講了:

陣列每乙個元素型別都是統一的,且連續不間斷的。

如果將記憶體想象成乙個賓館,你在預定賓館時,同行只有4個人,讓賓館服務員尋找了個4個連續的包間,且已經入住。因為賓館可能會有客人預定包間。

當你再次有朋友來賓館訂房間,且要求跟你們4個包間挨著時,這個時候可能你們相鄰的包間已經預定出去。陣列理論是不可能再次擴容。

這個時候就要用到動態陣列,動態陣列是可擴容的,但是陣列理論上是不可擴容的,但是動態陣列低層又完全是借用了陣列。動態陣列可多次擴容是因為:每次擴容都會重新開闢乙個空間,將值從原記憶體拷貝至新記憶體

陣列與動態陣列

int main other element will be set as the default value 2.get length int size sizeof a1 sizeof a1 cout the size of a1 is size endl 3.access element co...

靜態陣列和動態陣列的區別

靜態陣列在記憶體中位於棧區,是在定義時就已經在棧上分配了固定大小,在執行時這個大小不能改變,如 int a 10 在函式執行完以後,系統自動銷毀 動態陣列是malloc或者new出來的,位於記憶體的堆區,它的大小是在執行時給定,並且可以改變其,如 int a a new int 10 動態陣列,其建...

靜態陣列和動態陣列的區別

靜態陣列在記憶體中位於棧區,是在定義時就已經在棧上分配了固定大小,在執行時這個大小不能改變,如 int a 10 在函式執行完以後,系統自動銷毀 動態陣列是malloc或者new出來的,位於記憶體的堆區,它的大小是在執行時給定,並且可以改變其,如 int a a new int 10 動態陣列,其建...