C語言 動態(tài)數(shù)組的實現(xiàn)
C語言中不能宣接定義動態(tài)數(shù)組,如:
int n;
ini a[n];
但是實際編程中,有些數(shù)組的個數(shù)并不能確定,如果定義得數(shù)組過大,浪費內(nèi)存空間,如果定義得太小,又容納不下。也就是說,用靜態(tài)數(shù)組的方法很難解決。那么,如何解決這個問題呢?
因為數(shù)組名代表了該數(shù)組的首地址,也就是指針,如果定義一個指針表示數(shù)組名,之后將一段內(nèi)存空間的地址賦給該指針,就可以實現(xiàn)動態(tài)數(shù)組了。
為了實現(xiàn)動態(tài)數(shù)組,必須能夠動態(tài)申請內(nèi)存空間。c語言提供了一些內(nèi)存管理函數(shù),這些函數(shù)可以 根據(jù)需要動態(tài)地申請內(nèi)存空間,以實現(xiàn)動態(tài)數(shù)組的要求。
實現(xiàn)動態(tài)數(shù)組的相關(guān)函數(shù)
(1)mallocO函數(shù)
①mallocO函數(shù)的用法
void *malloc(unsigned size)
②mallocO函數(shù)的功能
在內(nèi)存的動態(tài)存儲區(qū)分配1個長度為size的連續(xù)空間。
③mallocO函數(shù)的返回值
申請成功,則返回新分配內(nèi)存塊的起始地址;否則,返回NULL。
(2)free()函數(shù)
①freeO函數(shù)的用法
void free(void *ptr)
②free()函數(shù)的功能
釋放由ptr指向的內(nèi)存塊(ptr是調(diào)用malloc()函數(shù)的返回值)。
③free()函數(shù)的返回值:無
原則上,使用malloc()函數(shù)申請的內(nèi)存塊,操作結(jié)束后應(yīng)及時使用free()函數(shù)釋放。尤其是循環(huán)使用malloc()函數(shù)時,如果不及時釋放不再使用的內(nèi)存塊,很可能很快就耗盡系統(tǒng)的內(nèi)存資源,從而導致程序無法繼續(xù)運行。
(3)說明
動態(tài)數(shù)組的本質(zhì)是一個指向一段地址空間的指針變量,對該連續(xù)的地址空間賦值,實現(xiàn)數(shù)組的功能。
以上介紹的兩個函數(shù)都包含在stdlib.h頭文件中。
點擊加載更多評論>>