C语言calloc()函数:分配内存空间并初始化
http://c.biancheng.net/cpp/html/134.html
頭文件:#include <stdlib.h>
calloc() 函數(shù)用來(lái)動(dòng)態(tài)地分配內(nèi)存空間并初始化為 0,其原型為:
? ? void* calloc (size_t num, size_t size);
calloc() 在內(nèi)存中動(dòng)態(tài)地分配 num 個(gè)長(zhǎng)度為 size 的連續(xù)空間,并將每一個(gè)字節(jié)都初始化為 0。所以它的結(jié)果是分配了 num*size 個(gè)字節(jié)長(zhǎng)度的內(nèi)存空間,并且每個(gè)字節(jié)的值都是0。
【返回值】分配成功返回指向該內(nèi)存的地址,失敗則返回 NULL。
如果 size 的值為 0,那么返回值會(huì)因標(biāo)準(zhǔn)庫(kù)實(shí)現(xiàn)的不同而不同,可能是 NULL,也可能不是,但返回的指針不應(yīng)該再次被引用。
注意:函數(shù)的返回值類(lèi)型是 void *,void 并不是說(shuō)沒(méi)有返回值或者返回空指針,而是返回的指針類(lèi)型未知。所以在使用 calloc() 時(shí)通常需要進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換,將 void 指針轉(zhuǎn)換成我們希望的類(lèi)型,例如:
calloc() 與? malloc() ?的一個(gè)重要區(qū)別是:calloc() 在動(dòng)態(tài)分配完內(nèi)存后,自動(dòng)初始化該內(nèi)存空間為零,而 malloc() 不初始化,里邊數(shù)據(jù)是未知的垃圾數(shù)據(jù)。下面的兩種寫(xiě)法是等價(jià)的:
代碼示例:
要輸入的數(shù)字的數(shù)目:4
請(qǐng)輸入數(shù)字 #1:126
請(qǐng)輸入數(shù)字 #2:343
請(qǐng)輸入數(shù)字 #3:45
請(qǐng)輸入數(shù)字 #4:234
你輸入的數(shù)字為:126 343 45 234
上面的程序會(huì)將你輸入的數(shù)字存儲(chǔ)起來(lái),然后輸出。因?yàn)樵诔绦蜻\(yùn)行時(shí)根據(jù)你的需要來(lái)動(dòng)態(tài)分配內(nèi)存,所以每次運(yùn)行程序你可以輸入不同數(shù)目的數(shù)字。
總結(jié)
以上是生活随笔為你收集整理的C语言calloc()函数:分配内存空间并初始化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 学习通考试用投屏会被发现吗?
- 下一篇: 成都欢乐谷可以带吃的东西进去吗