首頁 > 後端開發 > C++ > C語言中的Calloc是什麼?

C語言中的Calloc是什麼?

王林
發布: 2023-09-10 19:45:02
轉載
1898 人瀏覽過

C 庫記憶體分配函數 void *calloc(size_t nitems, size_t size) 分配所要求的記憶體並傳回指向它的指標。

malloc 和 calloc 的差異在於 malloc 不設定記憶體為零,而 calloc 將分配的記憶體設為零。

記憶體分配函數

記憶體可以透過兩種方式分配,如下所述-

#編譯時分配記憶體後,執行期間不能更改。就會出現記憶體不足或浪費的問題。

解決方案是動態建立內存,即在程式執行過程中根據使用者的要求建立記憶體。

標準用於動態記憶體管理的函式庫函數如下: -

  • malloc ( )
  • calloc ( )
  • realloc ( )
  • free ( )

Calloc ( ) 函數

  • #此函數用於在執行時間分配連續的記憶體區塊。

  • 這是專門為陣列設計的。

  • 它傳回void指針,它指向分配的記憶體的基底位址。

calloc()函數的語法如下 -

void *calloc ( numbers of elements, size in bytes)
登入後複製

範例

以下範例顯示 calloc() 函數的用法。

int *ptr;
ptr = (int * ) calloc (500,2);
登入後複製

這裡,將連續分配 500 個大小為 2 位元組的記憶體區塊。分配的總記憶體 = 1000 位元組。

C語言中的Calloc是什麼?< /p>

int *ptr;
ptr = (int * ) calloc (n, sizeof (int));
登入後複製

範例程式

下面給出了一個使用動態記憶體分配函數Calloc計算一組元素中偶數和奇數總和的C程式。

 線上示範

#include<stdio.h>
#include<stdlib.h>
void main(){
   //Declaring variables, pointers//
   int i,n;
   int *p;
   int even=0,odd=0;
   //Declaring base address p using Calloc//
   p = (int * ) calloc (n, sizeof (int));
   //Reading number of elements//
   printf("Enter the number of elements : ");
   scanf("%d",&n);
   /*Printing O/p -
   We have to use if statement because we have to check if memory
   has been successfully allocated/reserved or not*/
   if (p==NULL){
      printf("Memory not available");
      exit(0);
   }
   //Storing elements into location using for loop//
   printf("The elements are : </p><p>");
   for(i=0;i<n;i++){
      scanf("%d",p+i);
   }
   for(i=0;i<n;i++){
      if(*(p+i)%2==0){
         even=even+*(p+i);
      } else {
         odd=odd+*(p+i);
      }
   }
   printf("The sum of even numbers is : %d</p><p>",even);
   printf("The sum of odd numbers is : %d</p><p>",odd);
}
登入後複製

輸出

當上述程序執行時,會產生下列結果 -

Enter the number of elements : 4
The elements are :
12
56
23
10
The sum of even numbers is : 78
The sum of odd numbers is : 23
登入後複製

以上是C語言中的Calloc是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
objective-c - 關於C語言指標的問題
來自於 1970-01-01 08:00:00
0
0
0
C語言計算順序問題
來自於 1970-01-01 08:00:00
0
0
0
linux - 一道C語言printf的經典題目
來自於 1970-01-01 08:00:00
0
0
0
Linux下一道C語言的經典面試題
來自於 1970-01-01 08:00:00
0
0
0
在PHP語言中,C#ASCII碼等價表示為
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板