C 라이브러리 메모리 할당 함수 void *calloc(size_t nitems, size_t size)는 요청된 메모리를 할당하고 이에 대한 포인터를 반환합니다.
malloc과 calloc의 차이점은 malloc은 메모리를 0으로 설정하지 않는 반면 calloc은 할당된 메모리를 0으로 설정한다는 것입니다.
메모리는 아래 설명과 같이 두 가지 방법으로 할당할 수 있습니다. -
컴파일 타임에 메모리를 할당한 후에는 실행 중에 변경할 수 없습니다. 메모리가 부족하거나 낭비되는 문제가 발생합니다.
해결책은 메모리를 동적으로 생성하는 것입니다. 즉, 프로그램 실행 중에 사용자 요구 사항에 따라 메모리를 생성하는 것입니다.
동적 메모리 관리를 위한 표준 라이브러리 함수는 다음과 같습니다. -
이 함수는 사용 런타임에 연속적인 메모리 블록을 할당합니다.
이것은 배열용으로 특별히 설계되었습니다.
할당된 메모리의 기본 주소를 가리키는 void 포인터를 반환합니다.
calloc() 함수 구문은 다음과 같습니다. -
void *calloc ( numbers of elements, size in bytes)
다음 예제는 calloc() 함수의 사용법을 보여줍니다.
int *ptr; ptr = (int * ) calloc (500,2);
여기서는 2바이트 크기의 메모리 블록 500개가 연속적으로 할당됩니다. 할당된 총 메모리 = 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!