C言語の多次元配列

C言語の多次元配列

目次

多次元配列とは

多次元配列とは、配列の中にさらに配列を含む構造のことを指します。C言語では、一般的に二次元配列や三次元配列が使用されます。

二次元配列

二次元配列は「行」と「列」からなる配列です。宣言の基本形は以下の通りです。


int matrix[3][4];  // 3行4列の二次元配列

この配列には3×4=12個の整数を格納できます。

二次元配列の初期化

二次元配列の初期化方法にはいくつかの方法があります。

方法1: すべての要素を明示的に指定


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

方法2: 内部の波括弧を省略


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

二次元配列の要素へのアクセス

二次元配列の要素にアクセスするには、行と列のインデックスを指定します。


#include <stdio.h>

int main() {
    int matrix[3][4] = {
        {1, 2, 3, 4},
        {5, 6, 7, 8},
        {9, 10, 11, 12}
    };

    printf("%d\n", matrix[1][2]); // 7を出力

    return 0;
}

三次元配列

三次元配列は「高さ × 行 × 列」という構造を持ちます。以下のように宣言できます。


int cube[2][3][4];  // 2×3×4の三次元配列

三次元配列の使用例

三次元配列を使うと、例えば3D空間のデータを格納できます。


#include <stdio.h>

int main() {
    int cube[2][3][4] = {
        {
            {1, 2, 3, 4},
            {5, 6, 7, 8},
            {9, 10, 11, 12}
        },
        {
            {13, 14, 15, 16},
            {17, 18, 19, 20},
            {21, 22, 23, 24}
        }
    };

    printf("%d\n", cube[1][2][3]); // 24を出力

    return 0;
}

ポインタと多次元配列

多次元配列はポインタを使ってアクセスすることも可能です。


#include <stdio.h>

int main() {
    int matrix[2][3] = {
        {1, 2, 3},
        {4, 5, 6}
    };

    int (*ptr)[3] = matrix;  // 3要素の配列へのポインタ

    printf("%d\n", ptr[1][2]); // 6を出力

    return 0;
}

動的な多次元配列

動的に多次元配列を確保するには、mallocを使います。


#include <stdio.h>
#include <stdlib.h>

int main() {
    int rows = 3, cols = 4;
    int **matrix = (int **)malloc(rows * sizeof(int *));
    
    for (int i = 0; i < rows; i++) {
        matrix[i] = (int *)malloc(cols * sizeof(int));
    }

    // 値を代入
    matrix[1][2] = 7;
    printf("%d\n", matrix[1][2]); // 7を出力

    // メモリ解放
    for (int i = 0; i < rows; i++) {
        free(matrix[i]);
    }
    free(matrix);

    return 0;
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です