日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

C语言calloc()函数:分配内存空间并初始化

發(fā)布時(shí)間:2023/11/30 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言calloc()函数:分配内存空间并初始化 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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)型,例如:

  • char *ptr = (char *)calloc(10, 10); // 分配100個(gè)字節(jié)的內(nèi)存空間

  • calloc() 與? malloc() ?的一個(gè)重要區(qū)別是:calloc() 在動(dòng)態(tài)分配完內(nèi)存后,自動(dòng)初始化該內(nèi)存空間為零,而 malloc() 不初始化,里邊數(shù)據(jù)是未知的垃圾數(shù)據(jù)。下面的兩種寫(xiě)法是等價(jià)的:
  • // calloc() 分配內(nèi)存空間并初始化
  • char *str1 = (char *)calloc(10, 2);
  • // malloc() 分配內(nèi)存空間并用 memset() 初始化
  • char *str2 = (char *)malloc(20);
  • memset(str2, 0, 20);

  • 代碼示例:
  • #include <stdio.h>
  • #include <stdlib.h>
  • int main ()
  • {
  • int i,n;
  • int * pData;
  • printf ("要輸入的數(shù)字的數(shù)目:");
  • scanf ("%d",&i);
  • pData = (int*) calloc (i,sizeof(int));
  • if (pData==NULL) exit (1);
  • for (n=0;n<i;n++)
  • {
  • printf ("請(qǐng)輸入數(shù)字 #%d:",n+1);
  • scanf ("%d",&pData[n]);
  • }
  • printf ("你輸入的數(shù)字為:");
  • for (n=0;n<i;n++) printf ("%d ",pData[n]);
  • free (pData);
  • system("pause");
  • return 0;
  • }
  • 運(yùn)行結(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)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。