位置:首頁 > 軟件操作教程 > 編程開發(fā) > C語言 > 問題詳情

C語言 動態(tài)數(shù)組的實現(xiàn)

提問人:劉團圓發(fā)布時間:2020-12-01

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頭文件中。

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(0)
返回頂部