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

Cで2D配列を動的に割り当てる方法は?


2D配列は、単一のポインターを使用してCで動的に割り当てることができます。これは、サイズrow * column * dataTypeSizeのメモリブロックがmallocを使用して割り当てられ、ポインタ演算を使用して行列要素にアクセスできることを意味します。

これを実証するプログラムは次のとおりです。

#include <stdio.h>
#include <stdlib.h> 
int main() {
   int row = 2, col = 3;
   int *arr = (int *)malloc(row * col * sizeof(int)); 
   int i, j;
   for (i = 0; i < row; i++)
      for (j = 0; j < col; j++)
         *(arr + i*col + j) = i + j;    
   printf("The matrix elements are:\n");
   for (i = 0; i < row; i++) {
      for (j = 0; j < col; j++) {
         printf("%d ", *(arr + i*col + j)); 
      }
      printf("\n");
   }
   free(arr); 
   return 0;
}

上記のプログラムの出力は次のとおりです。

The matrix elements are:
0 1 2 
1 2 3

上記のプログラムを理解しましょう。

2次元配列arrは、mallocを使用して動的に割り当てられます。次に、ネストされたforループとポインター演算を使用して2次元配列が初期化されます。これを示すコードスニペットは次のとおりです。

int row = 2, col = 3; 
int *arr = (int *)malloc(row * col * sizeof(int));
int i, j;
for (i = 0; i < row; i++)
   for (j = 0; j < col; j++)
      *(arr + i*col + j) = i + j; 

次に、2次元配列の値が表示されます。最後に、動的に割り当てられたメモリは、freeを使用して解放されます。これを示すコードスニペットは次のとおりです。

printf("The matrix elements are:\n");
for (i = 0; i < row; i++) {
   for (j = 0; j < col; j++) {
      printf("%d ", *(arr + i*col + j)); 
   }
   printf("\n");
}
free(arr); 

  1. Javascriptでメモリを割り当てる方法は?

    プログラミング言語に関係なく、メモリのライフサイクルはほぼ常に同じです- 必要なメモリを割り当てます 割り当てられたメモリを使用する(読み取り、書き込み) 割り当てられたメモリが不要になったら解放します 2番目の部分は、すべての言語で明示されています。割り当てられたメモリの使用は、開発者が行う必要があります。 最初と最後の部分は、Cのような低水準言語では明示的ですが、JavaScriptのような高水準言語ではほとんど暗黙的です。 したがって、JavaScriptでメモリを割り当てたり解放したりする明示的な方法はありません。オブジェクトを初期化するだけで、オブジェクトにメモリが割り当て

  2. JavaScriptの配列を使用してラジオボタンを動的に作成するにはどうすればよいですか?

    配列を使用してラジオボタンを動的に作成するには、createElement()およびappendChild()の概念を使用します。 例 以下はコードです- <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Docu