很多人在編寫c語言**的時候很少使用動態陣列,不管什麼情況下通通使用靜態陣列的方法來解決,在當初學習c語言的時候我就是乙個典型的例子,但是現在發現這是乙個相當不好的習慣,甚至可能導致編寫的程式出現一些致命的錯誤。尤其對於搞嵌入式的人來所,嵌入式系統的記憶體是寶貴的,記憶體是否高效率的使用往往意味著嵌入式裝置是否高質量和高效能,所以高效的使用記憶體對我們來說是很重要的。那麼我們在自己編寫c語言**的時候就應該學會使用動態陣列,這也就是我這篇部落格要給大家講的,我盡我所能的用一些簡單的**來講解動態陣列,希望我所講的對你有所幫助。
那麼我們首先來看看什麼是動態陣列,動態陣列是相對於靜態陣列而言,從「動」字我們也可以看出它的靈活性,靜態陣列的長度是預先定義好的,在整個程式中,一旦給定大小後就無法改變。而動態陣列則不然,它可以隨程式需要而重新指定大小。動態陣列的記憶體空間是從堆動態分配的。是通過執行**而為其分配儲存空間。當程式執行到我們編寫的分配語句時,才為其分配。對於靜態陣列,其建立非常方便,使用完也無需釋放,要引用也簡單,但是建立後無法改變其大小是其致命弱點!對於動態陣列,其建立麻煩,使用完必須由程式設計師自己釋放,否則將會引起記憶體洩露。但其使用非常靈活,能根據程式需要動態分配大小。所以相對於靜態陣列的來說我們對於使用動態陣列有很大的自由度。
在建立動態陣列的過程中我們要遵循乙個原則,那就是在建立的時候從外層往裡層,逐層建立;而釋放的時候從裡層往外層,逐層釋放。這個話你讀了可能理解並不深刻,不過不要急,接下來我們看看兩段**。
一維動態陣列的建立:
#include
#include
intmain()
printf
("\n");
for(i=
0;i)free
(array)
;//釋放第一維指標
return0;
}
執行結果為: C語言中動態分配陣列
原文 如何動態的定義及使用陣列呢?記得一般用陣列的時候都是先指定大小的。當時問老師,老師說是不可以的。後來又問了一位教c 的老師,他告訴我在c 裡用new可以做到,一直不用c 所以也不明白。今天在逛論壇時終於找到了c語言中的用法 int a int n scanf d n a int malloc ...
C語言動態分配陣列
最近在研究c語言相關的東西,遇到了一些問題,主要是關於陣列記憶體分配的問題。我們最常用的陣列分配方式就是使用 int array 來分配固定長度的陣列,但是當需要動態分配陣列長度的時候怎麼辦呢?最近在使用的時候就遇到了,然後自己搜了搜相關的使用方法。1.先介紹基本資料型別的建立方法 int arra...
C語言中動態分配陣列 一維
問題 如何動態的定義及使用陣列呢?記得一般用陣列的時候都是先指定大小的。在c 裡用new可以做到,純c語言好像沒法做到,今天在逛的時候終於找到了c語言中的用法 看原貼 int a int n scanf d n a int malloc n sizeof int free a 這樣就動態分配了陣列a...