嚴格來說,c語言中並沒有直接建立動態陣列的方法。
不同於別的語言,c語言不允許用 int a[n] (n為變數) 的方式定義動態陣列,而是通過採用指標型函式建立動態儲存區,繼而實現動態陣列的效果,要使用這些函式,需要我們了解指標的用法。
在stdlib庫中提供了 幾個建立動態儲存區的指標型函式,通過呼叫這些函式,可以讓我們實現建立動態陣列的效果。
下面分別介紹每個函式的使用方法:
函式作用:開闢乙個長度為size的連續空間,函式的返回值是所分配區域的第乙個位元組的位址,開闢空間失敗返回null
形參 size 的型別定義為無符號型別,表示開闢空間的長度
要注意該指標的基型別是void,即不指向任何型別的資料。
# include
/* 前已說明該函式是由stdlib庫提供的
即在stdlib.h的標頭檔案中宣告的
因此使用前要把stdlib.h標頭檔案包含到程式檔案中
*/# include
intmain()
函式作用:要開闢n個長度為size的連續空間。函式的返回值是所分配區域的第乙個位元組的位址,開闢空間失敗返回null
形參n的型別定義為無符號型別,表示長度為size的空間的個數
形參 size 的型別定義為無符號型別,表示開闢空間的長度
calloc函式開闢的空間比較大,可以為一維陣列開闢動態儲存空間,其中n維元素個數,每個元素長度為size
# include
/* 前已說明該函式是由stdlib庫提供的
即在stdlib.h的標頭檔案中宣告的
因此使用前要把stdlib.h標頭檔案包含到程式檔案中
*/# include
intmain()
該函式的作用:對於那些使用malloc、calloc函式開闢的動態控制項,如果想要改變空間大小,可以使用該函式重新分配。
引數p 是void型別的指標變數,要指向乙個動態儲存區
形參 size 的型別定義為無符號型別,示開闢空間的長度
# include
/* 前已說明該函式是由stdlib庫提供的
即在stdlib.h的標頭檔案中宣告的
因此使用前要把stdlib.h標頭檔案包含到程式檔案中
*/# include
intmain()
函式作用:釋放指標p所指向的動態空間。
引數p 是void型別的指標變數,要指向乙個動態儲存區
該函式 意如其名,便不用**演示,讀者可自己上機操作。
總結:c語言中定義動態陣列的方法歸根到底來說還是操作指標,通過指標型函式建立乙個連續的動態儲存區,用指標變數指向該儲存區的第乙個位元組的位址,進而進行操作,有點類似於將乙個陣列名賦給乙個指標變數,繼而運算元組。所以,理解並掌握指標,是學習c語言的必經之路!
建立動態陣列(c語言)
我們在剛開始學陣列的時候大都會犯這麼乙個小錯誤 int a n 執行後就會出現bug,也就是說,c語言不允許對陣列的大小做動態定義。這個規則使得我們在解決一些問題的時候很不方便,動態的陣列就很好地解決了這一問題,下面就來看看動態陣列。標頭檔案 includ malloc函式的引數為所需申請記憶體的大...
C 建立動態陣列
int sum 0 arraylist al new arraylist private void button1 click object sender,eventargs e while str null str string line new string al.count 1 al.copy...
C 建立動態陣列
每乙個程式在執行時都占用一塊可用的記憶體空間,用於存放動態分配的物件,此記憶體空間成為程式的自由儲存區或堆。c 使用new和delete表示式實現咋說自由儲存區內分配儲存空間。陣列變數通過指標型別 陣列名稱 和維數來定義。而動態分配陣列時,只需要指定型別和陣列長度,不必為陣列物件命名,new表示式返...