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

C語言中的Calloc是什麼?

王林
王林轉載
2023-09-10 19:45:021807瀏覽

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是什麼?

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刪除