C 庫記憶體分配函數 void *calloc(size_t nitems, size_t size) 分配所要求的記憶體並傳回指向它的指標。
malloc 和 calloc 的差異在於 malloc 不設定記憶體為零,而 calloc 將分配的記憶體設為零。
記憶體可以透過兩種方式分配,如下所述-
#編譯時分配記憶體後,執行期間不能更改。就會出現記憶體不足或浪費的問題。
解決方案是動態建立內存,即在程式執行過程中根據使用者的要求建立記憶體。
標準用於動態記憶體管理的函式庫函數如下: -
#此函數用於在執行時間分配連續的記憶體區塊。
這是專門為陣列設計的。
它傳回void指針,它指向分配的記憶體的基底位址。
calloc()函數的語法如下 -
void *calloc ( numbers of elements, size in bytes)
以下範例顯示 calloc() 函數的用法。
int *ptr; ptr = (int * ) calloc (500,2);
這裡,將連續分配 500 個大小為 2 位元組的記憶體區塊。分配的總記憶體 = 1000 位元組。
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中文網其他相關文章!