C ライブラリのメモリ割り当て関数 void *calloc(size_t niitems, size_t size) は、要求されたメモリを割り当て、そのメモリへのポインタを返します。
malloc と calloc の違いは、malloc はメモリを 0 に設定しないのに対し、calloc は割り当てられたメモリを 0 に設定することです。
メモリは、以下に説明する 2 つの方法で割り当てることができます。
メモリがコンパイル時に割り当てられた後、実行中は変更不可。メモリの不足または無駄なメモリの問題が発生する可能性があります。
解決策は、メモリを動的に作成することです。つまり、プログラムの実行中にユーザーの要件に従ってメモリを作成します。
動的メモリ管理の標準ライブラリ関数は次のとおりです。 -
この関数は、実行時に連続したメモリ ブロックを割り当てるために使用されます。
これは、配列用に特別に設計されています。
割り当てられたメモリのベース アドレスを指す void ポインタを返します。
calloc() 関数の構文は次のとおりです。 -
void *calloc ( numbers of elements, size in bytes)
次の例は、calloc() 関数の使用法を示しています。 。
int *ptr; ptr = (int * ) calloc (500,2);
ここでは、サイズ 2 バイトのメモリ ブロックが 500 個連続して割り当てられます。割り当てられた合計メモリ = 1000 バイト。
< /p>
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 中国語 Web サイトの他の関連記事を参照してください。