Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語でのCallocとは何ですか?


Cライブラリのメモリ割り当て関数void*calloc(size_t nitems、size_t size)は、要求されたメモリを割り当て、そのメモリへのポインタを返します。

mallocとcallocの違いは、mallocがメモリをゼロに設定しないのに対し、callocは割り当てられたメモリをゼロに設定することです。

メモリ割り当て関数

以下に説明するように、メモリは2つの方法で割り当てることができます-

C言語でのCallocとは何ですか?

コンパイル時にメモリが割り当てられると、実行中にメモリを変更することはできません。不十分であるか、そうでなければメモリの浪費の問題があります。

解決策は、動的に、つまりプログラムの実行中のユーザーの要件に従ってメモリを作成することです。

動的メモリ管理に使用される標準ライブラリ関数は次のとおりです-

  • malloc()
  • calloc()
  • realloc()
  • 無料()

Calloc()関数

  • この関数は、実行時にメモリの連続ブロックを割り当てるために使用されます。

  • これはアレイ用に特別に設計されています。

  • 割り当てられたメモリのベースアドレスを指すvoidポインタを返します。

calloc()関数の構文を以下に示します-

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

次の例は、calloc()関数の使用法を示しています。

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

ここでは、それぞれサイズ2バイトの500ブロックのメモリが継続的に割り当てられます。割り当てられた合計メモリ=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 : \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

  1. C言語のstrcmp()関数とは何ですか?

    Cライブラリ関数intstrcmp(const char * str1、const char * str2) str1が指す文字列を比較します str2が指す文字列へ 。 文字の配列は文字列と呼ばれます。 宣言 以下は配列の宣言です- char stringname [size]; 例-charstring[50];長さ50文字の文字列 初期化 単一文字定数の使用- char string[10] = { ‘H’, ‘e’, ‘l’, ‘l’, ‘o’ ,&ls

  2. C#プログラミングとは何ですか?

    C#は、Microsoftによって開発された最新の汎用オブジェクト指向プログラミング言語です。 C#は、共通言語インフラストラクチャ(CLI)用に設計されています。これは、実行可能コードとランタイム環境で構成されており、さまざまなコンピュータープラットフォームやアーキテクチャでさまざまな高級言語を使用できます。 C#の機能は次のとおりです- ブール条件 自動ガベージコレクション 標準ライブラリ アセンブリのバージョン管理 プロパティとイベント デリゲートとイベント管理 使いやすいジェネリック インデクサー 条件付きコンパイル シンプルなマルチスレッド LINQおよびLambda式 Win