C 库 - calloc() 函数



C 的stdlibcalloc() 函数用于分配请求的内存并返回指向它的指针。它为对象数组预留一块内存,并将分配的存储区中的所有字节初始化为零。

如果我们尝试在没有初始化的情况下读取已分配内存的值,我们将得到“零”,因为 calloc() 已经将其初始化为 0。

语法

以下是 calloc() 函数的 C 库语法 -

void *calloc(size_t nitems, size_t size)

参数

此函数接受以下参数 -

  • nitems - 它表示要分配的元素数量。

  • size - 它表示每个元素的大小。

返回值

以下是返回值 -

  • 返回指向已分配内存的指针,所有字节都初始化为零。

  • 如果分配失败,则返回空指针。

示例 1

在此示例中,我们创建了一个基本的 C 程序来演示如何使用 calloc() 函数。

#include <stdio.h>
#include <stdlib.h>
int main() {
   int n = 5;
   int *array;
   
   // use calloc function to allocate the memory
   array = (int*)calloc(n, sizeof(int));
   
   if (array == NULL) {
      fprintf(stderr, "Memory allocation failed!\n");
      return 1;
   }
   
   //Display the array value
   printf("Array elements after calloc: ");
   for (int i = 0; i < n; i++) {
      printf("%d ", array[i]);
   }
   printf("\n");
   
   //free the allocated memory
   free(array);
   return 0;
}

输出

以下是输出 -

Array elements after calloc: 0 0 0 0 0 

示例 2

让我们再创建一个 C 示例,我们使用 calloc() 函数为数字分配内存。

#include <stdio.h>
#include <stdlib.h>
int main() {	
   long *number;   
   //initialize number with null
   number = NULL;
   if( number != NULL ) {
      printf( "Allocated 10 long integers.\n" );
   }      
   else {
      printf( "Can't allocate memory.\n" );
   }
   
   //allocating memory of a number
   number = (long *)calloc( 10, sizeof( long ) );
   if( number != NULL ) {
      printf( "Allocated 10 long integers.\n" );
   }      
   else {
      printf( "\nCan't allocate memory.\n" );
   }   
   //free the allocated memory   
   free( number );
}

输出

以下是输出 -

Can't allocate memory.
Allocated 10 long integers.

示例 3

以下是使用 calloc() 函数为指针分配内存的 C 程序,大小为零。

#include <stdio.h>
#include <stdlib.h>

int main() {
   int *pointer = (int *)calloc(0, 0);
   if (pointer == NULL) {
      printf("Null pointer \n");
   } else {
      printf("Address = %p", (void*)pointer);
   }
   free(pointer);
   return 0;
}

输出

以下是输出 -

Address = 0x55c5f4ae02a0
广告