Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

Calloc ในภาษา C คืออะไร?


ฟังก์ชันการจัดสรรหน่วยความจำ C ไลบรารีเป็นโมฆะ *calloc(size_t nitems, size_t size) จะจัดสรรหน่วยความจำที่ร้องขอและส่งกลับตัวชี้ไปที่หน่วยความจำนั้น

ความแตกต่างใน malloc และ calloc คือ malloc ไม่ได้ตั้งค่าหน่วยความจำเป็นศูนย์ ในขณะที่ calloc ตั้งค่าหน่วยความจำที่จัดสรรเป็นศูนย์

ฟังก์ชันการจัดสรรหน่วยความจำ

หน่วยความจำสามารถจัดสรรได้สองวิธีตามที่อธิบายไว้ด้านล่าง -

Calloc ในภาษา C คืออะไร?

เมื่อจัดสรรหน่วยความจำ ณ เวลาคอมไพล์แล้ว จะไม่สามารถเปลี่ยนแปลงได้ในระหว่างการดำเนินการ จะมีปัญหาเรื่องความไม่เพียงพอหรือการสูญเสียความจำอย่างอื่น

วิธีแก้ไขคือสร้างหน่วยความจำแบบไดนามิก เช่น ตามความต้องการของผู้ใช้ระหว่างการทำงานของโปรแกรม

ฟังก์ชันไลบรารีมาตรฐานที่ใช้สำหรับการจัดการหน่วยความจำแบบไดนามิกมีดังนี้ -

  • malloc ( )
  • calloc ( )
  • realloc ( )
  • ฟรี ( )

ฟังก์ชัน Calloc ( )

  • ฟังก์ชันนี้ใช้สำหรับการจัดสรรบล็อกต่อเนื่องของหน่วยความจำ ณ รันไทม์

  • ออกแบบมาเป็นพิเศษสำหรับอาร์เรย์

  • ส่งคืนตัวชี้เป็นโมฆะ ซึ่งชี้ไปยังที่อยู่ฐานของหน่วยความจำที่จัดสรร

ไวยากรณ์สำหรับฟังก์ชัน calloc() มีดังต่อไปนี้ -

void *calloc ( numbers of elements, size in bytes)

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงการใช้งานฟังก์ชัน calloc()

int *ptr;
ptr = (int * ) calloc (500,2);

ที่นี่ 500 บล็อกหน่วยความจำแต่ละขนาด 2 ไบต์จะได้รับการจัดสรรอย่างต่อเนื่อง หน่วยความจำทั้งหมดที่จัดสรร =1,000 ไบต์

Calloc ในภาษา C คืออะไร?

int *ptr;
ptr = (int * ) calloc (n, sizeof (int));

ตัวอย่างโปรแกรม

ด้านล่างนี้คือโปรแกรม C เพื่อคำนวณผลรวมของเลขคู่และเลขคี่ในชุดขององค์ประกอบโดยใช้ฟังก์ชันการจัดสรรหน่วยความจำแบบไดนามิก Calloc

#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 : \n");
   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\n",even);
   printf("The sum of odd numbers is : %d\n",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