【C言語】グローバル変数で動的な配列を生成する方法

この記事では、C言語においてグローバル変数を使って配列を宣言・初期化し、要素へのアクセスや変更する方法を解説します。

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

目次から探す

グローバル変数を使った配列の宣言と初期化

グローバル変数の宣言と初期化

C言語では、グローバル変数を使って配列を宣言し、初期化することができます。

グローバル変数は、関数の外部で宣言される変数であり、プログラムのどこからでもアクセスすることができます。

以下の例では、グローバル変数として整数型の配列を宣言し、初期化しています。

#include <stdio.h>
int globalArray[5] = {1, 2, 3, 4, 5};
int main() {
    // グローバル変数の配列を使用する
    for (int i = 0; i < 5; i++) {
        printf("%d ", globalArray[i]);
    }
    
    return 0;
}

上記のコードでは、globalArrayという名前のグローバル変数を宣言し、要素数5の配列として初期化しています。

main関数内で、globalArrayの要素を順番に表示しています。

動的な配列の宣言と初期化

C言語では、動的な配列を宣言するためには、メモリの動的確保を行う必要があります。

動的確保には、malloc関数を使用します。

以下の例では、malloc関数を使って動的な配列を宣言し、初期化しています。

#include <stdio.h>
#include <stdlib.h>
int* dynamicArray;
int main() {
    int size;
    
    printf("配列のサイズを入力してください: ");
    scanf("%d", &size);
    
    // メモリの動的確保
    dynamicArray = (int*)malloc(size * sizeof(int));
    
    // 配列の初期化
    for (int i = 0; i < size; i++) {
        dynamicArray[i] = i + 1;
    }
    
    // 配列の表示
    for (int i = 0; i < size; i++) {
        printf("%d ", dynamicArray[i]);
    }
    
    // メモリの解放
    free(dynamicArray);
    
    return 0;
}

上記のコードでは、dynamicArrayという名前のグローバル変数を宣言し、malloc関数を使って動的に配列のメモリを確保しています。

ユーザーに配列のサイズを入力してもらい、そのサイズに合わせて配列を初期化しています。

最後に、free関数を使ってメモリを解放しています。

malloc関数は、stdlib.hヘッダファイルをインクルードする必要があります。

また、動的に確保したメモリは使用後に必ず解放する必要があります。

グローバル変数を使った配列の要素へのアクセス

グローバル変数を使った配列の要素へのアクセス方法

グローバル変数を使った配列の要素へのアクセスは、配列名とインデックスを組み合わせて行います。

配列名にはグローバル変数を使用し、インデックスには要素の位置を指定します。

以下に例を示します。

#include <stdio.h>
int globalArray[5] = {1, 2, 3, 4, 5}; // グローバル変数で配列を宣言
int main() {
    printf("%d\n", globalArray[0]); // 配列の先頭要素にアクセス
    printf("%d\n", globalArray[2]); // 配列の3番目の要素にアクセス
    printf("%d\n", globalArray[4]); // 配列の末尾の要素にアクセス
    return 0;
}

上記のコードでは、globalArrayというグローバル変数で配列を宣言しています。

main関数内で、globalArrayの要素にアクセスしています。

globalArray[0]は配列の先頭要素、globalArray[2]は配列の3番目の要素、globalArray[4]は配列の末尾の要素にアクセスしています。

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

1
3
5

グローバル変数を使った配列の要素の変更方法

グローバル変数を使った配列の要素の変更も、配列名とインデックスを組み合わせて行います。

配列名にはグローバル変数を使用し、インデックスには変更したい要素の位置を指定します。

以下に例を示します。

#include <stdio.h>
int globalArray[5] = {1, 2, 3, 4, 5}; // グローバル変数で配列を宣言
void changeArrayElement() {
    globalArray[2] = 10; // 配列の3番目の要素を変更
}
int main() {
    printf("%d\n", globalArray[2]); // 変更前の値を表示
    changeArrayElement(); // 配列の要素を変更する関数を呼び出し
    printf("%d\n", globalArray[2]); // 変更後の値を表示
    return 0;
}

上記のコードでは、globalArrayというグローバル変数で配列を宣言しています。

changeArrayElementという関数内で、globalArray[2]の値を変更しています。

main関数内で、変更前と変更後の値を表示しています。

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

3
10

以上が、グローバル変数を使った配列の要素へのアクセス方法と要素の変更方法の解説です。

グローバル変数を使うことで、どの関数からでも配列の要素にアクセスできるため、柔軟なプログラミングが可能となります。

ただし、グローバル変数の使用には注意が必要であり、適切に使うようにしましょう。

目次から探す