【C言語】行列を初期化する方法

この記事では、C言語における行列の初期化方法と注意点について解説します。

静的な行列と動的な行列の初期化方法を紹介し、メモリの確保と解放、初期化のパフォーマンスについても触れます。

初心者の方でもわかりやすく、サンプルコードを交えて説明します。

目次から探す

静的な行列の初期化

静的な行列の初期化方法

C言語では、静的な行列を初期化する方法がいくつかあります。

以下にいくつかの方法を紹介します。

  1. 要素ごとの初期化

静的な行列を要素ごとに初期化する場合、以下のように初期値を指定します。

int matrix[3][3] = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

上記の例では、3×3の行列を定義し、要素ごとに初期値を指定しています。

  1. 一括の初期化

静的な行列を一括で初期化する場合、以下のように初期値を指定します。

int matrix[3][3] = {
    1, 2, 3,
    4, 5, 6,
    7, 8, 9
};

上記の例では、3×3の行列を定義し、一括で初期値を指定しています。

静的な行列の初期化の例

以下に、静的な行列の初期化の例を示します。

#include <stdio.h>
int main() {
    int matrix[2][2] = {
        {1, 2},
        {3, 4}
    };
    // 行列の要素を表示する
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 2; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
    return 0;
}

上記の例では、2×2の行列を定義し、要素ごとに初期値を指定しています。

その後、行列の要素を表示するために、2重のループを使用しています。

実行結果は以下の通りです。

1 2
3 4

このように、静的な行列の初期化は要素ごとに初期値を指定するか、一括で初期値を指定することができます。

適切な方法を選んで使用してください。

※ 静的な行列の初期化は、コンパイル時に初期値が設定されるため、実行時に初期化する必要はありません。

動的な行列の初期化

動的な行列の初期化は、プログラム実行中に必要なメモリを動的に確保する方法です。

静的な行列とは異なり、行列のサイズを実行時に指定することができます。

以下では、動的な行列の初期化方法とその例について説明します。

動的な行列の初期化方法

動的な行列の初期化には、以下の手順を経ます。

  1. 行列の行数と列数をユーザーから入力またはプログラム内で指定します。
  2. 必要なメモリを動的に確保するために、malloc関数を使用します。

malloc関数は、指定したバイト数のメモリを確保し、その先頭アドレスを返します。

  1. 確保したメモリを行列として扱うために、ポインタを使用します。

ポインタは、メモリ上のアドレスを指し示す変数です。

  1. 行列の要素に値を代入します。

以下に、動的な行列の初期化方法のサンプルコードを示します。

#include <stdio.h>
#include <stdlib.h>
int main() {
    int rows, cols;
    
    printf("行数を入力してください: ");
    scanf("%d", &rows);
    
    printf("列数を入力してください: ");
    scanf("%d", &cols);
    
    // 行列の要素数を計算
    int size = rows * cols;
    
    // メモリの動的確保
    int* matrix = (int*)malloc(size * sizeof(int));
    
    // 行列の要素に値を代入
    for (int i = 0; i < size; i++) {
        matrix[i] = i + 1;
    }
    
    // 行列の要素を表示
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            printf("%d ", matrix[i * cols + j]);
        }
        printf("\n");
    }
    
    // メモリの解放
    free(matrix);
    
    return 0;
}

動的な行列の初期化の例

上記のサンプルコードでは、ユーザーから行数と列数を入力し、その行数と列数に基づいて動的な行列を初期化しています。

行列の要素には、1から順に増える値が代入されます。

以下は、行数と列数をそれぞれ3と4とした場合の実行結果の例です。

行数を入力してください: 3
列数を入力してください: 4
1 2 3 4 
5 6 7 8 
9 10 11 12

このように、動的な行列の初期化では、プログラム実行時に行列のサイズを指定し、必要なメモリを動的に確保することができます。

目次から探す