首页 >后端开发 >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删除