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

Cでのcalloc()とmalloc()


calloc()

関数calloc()は、連続した場所を表します。これはmalloc()と同様に機能しますが、それぞれ同じサイズのメモリの複数のブロックを割り当てます。

これがC言語でのcalloc()の構文です

void *calloc(size_t number, size_t size);

ここで

番号 −割り当てられる配列の要素の数。

サイズ −割り当てられたメモリのサイズ(バイト単位)。

これがC言語でのcalloc()の例です

#include <stdio.h>
#include <stdlib.h>
int main() {
   int n = 4, i, *p, s = 0;
   p = (int*) calloc(n, sizeof(int));
   if(p == NULL) {
      printf("\nError! memory not allocated.");
      exit(0);
   }
   printf("\nEnter elements of array : ");
   for(i = 0; i < n; ++i) {
      scanf("%d", p + i);
      s += *(p + i);
   }
   printf("\nSum : %d", s);
   return 0;
}

出力

Enter elements of array : 2 24 35 12
Sum : 73

上記のプログラムでは、メモリブロックはcalloc()によって割り当てられます。ポインタ変数がnullの場合、メモリ割り当てはありません。ポインタ変数がnullでない場合、ユーザーは配列の4つの要素を入力する必要があり、要素の合計が計算されます。

p = (int*) calloc(n, sizeof(int));
if(p == NULL) {
   printf("\nError! memory not allocated.");
   exit(0);
}
printf("\nEnter elements of array : ");
for(i = 0; i < n; ++i) {
   scanf("%d", p + i);
   s += *(p + i);
}

malloc()

関数malloc()は、要求されたサイズのバイトを割り当てるために使用され、割り当てられたメモリの最初のバイトへのポインタを返します。失敗した場合はnullポインタを返します。

これがC言語でのmalloc()の構文です

pointer_name = (cast-type*) malloc(size);

ここで

pointer_name −ポインタに付けられた任意の名前。

キャストタイプ −malloc()によって割り当てられたメモリをキャストするデータ型。

サイズ −割り当てられたメモリのサイズ(バイト単位)。

これがC言語のmalloc()の例です

#include <stdio.h>
#include <stdlib.h>
int main() {
   int n = 4, i, *p, s = 0;
   p = (int*) malloc(n * sizeof(int));
   if(p == NULL) {
      printf("\nError! memory not allocated.");
      exit(0);
   }
   printf("\nEnter elements of array : ");
   for(i = 0; i < n; ++i) {
      scanf("%d", p + i);
      s += *(p + i);
   }
   printf("\nSum : %d", s);
   return 0;
}

これが出力です

出力

Enter elements of array : 32 23 21 8
Sum : 84

上記のプログラムでは、4つの変数が宣言されており、そのうちの1つはmallocによって割り当てられたメモリを格納しているポインタ変数*pです。配列の要素はユーザーによって印刷され、要素の合計が印刷されます。

int n = 4, i, *p, s = 0;
p = (int*) malloc(n * sizeof(int));
if(p == NULL) {
   printf("\nError! memory not allocated.");
   exit(0);
}
printf("\nEnter elements of array : ");
for(i = 0; i < n; ++i) {
   scanf("%d", p + i);
   s += *(p + i);
}
printf("\nSum : %d", s);

  1. 設定と同期:FirefoxとChrome

    主に仕事や遊びにブラウザを使用するかどうか。速度、信頼性、設定、および機能が不可欠です。 FirefoxとChromeはブラウザの最上位の選択肢であり、それぞれに独自の利点があります。それで、2つの間に「最良の選択」はありますか?いくつかの違いを見てみましょう。 ブラウザ設定 ブラウザの設定は、ブラウザを設定、整理、および使用するための最も基本的なオプションを提供します。使用可能な設定の数、それらのアクセス可能性、およびそれぞれをどの程度構成できるかが重要です。なんで?ブラウザの使用に関しては、エクスペリエンスを向上させるために利用できる最も活気のあるオプションが必要だからです。 Firef

  2. HERE 対 Microsoft 対 Windows ... マップ

    聞いて聞いて。ここにいます、天使を送ってくれませんか。とにかく、今日は、Windows Phone で利用できる 3 つのオフライン ナビゲーション スイートの長所と短所、およびそれらがどのように重なり合うかについて説明したいと思います。 HERE Maps は WP10 では利用できなくなり、WP8 では更新されなくなりました。Microsoft Maps または Windows Maps のいずれかを使用する必要があります。では、なぜこの件に関する私の意見を気にするのですか? 私は、スマートフォンが嫌いで Windows Phone が大好きな Linux ユーザーであり、Androi