MENU

【C言語】共用体で配列を扱う方法

目次から探す

共用体を使った配列の宣言

共用体を使った配列は、複数のデータ型を同じメモリ領域で共有することができます。

これにより、異なるデータ型の要素を持つ配列を効率的に扱うことができます。

共用体を使った配列の宣言方法

共用体を使った配列の宣言方法は、通常の配列の宣言と似ています。

以下のように、共用体のデータ型を指定し、配列の要素数を指定します。

union MyUnion {
    int intValue;
    float floatValue;
    char charValue;
};
union MyUnion myArray[5];

上記の例では、MyUnionという共用体を定義し、その共用体を要素とする配列myArrayを宣言しています。

配列の要素数は5としていますが、必要に応じて要素数を変更することができます。

共用体を使った配列の初期化方法

共用体を使った配列の初期化方法も、通常の配列の初期化と同様です。

以下のように、各要素に対して初期値を指定します。

union MyUnion {
    int intValue;
    float floatValue;
    char charValue;
};
union MyUnion myArray[3] = {
    {10}, // intValueに10を代入
    {3.14}, // floatValueに3.14を代入
    {'A'} // charValueに'A'を代入
};

上記の例では、MyUnionという共用体を定義し、その共用体を要素とする配列myArrayを宣言しています。

配列の要素数は3としています。

各要素には、{}で囲んだ初期値を指定しています。

初期値の順番は、共用体のメンバの宣言順に従っています。

共用体を使った配列の宣言や初期化では、各要素のデータ型が異なることに注意してください。

また、共用体のメンバのデータ型に合わせて、適切な初期値を指定する必要があります。

共用体を使った配列の操作

共用体を使った配列では、要素へのアクセスや変更方法が通常の配列とは異なる点があります。

以下では、共用体を使った配列の要素へのアクセス方法と要素の変更方法について解説します。

共用体を使った配列の要素へのアクセス方法

共用体を使った配列の要素へのアクセス方法は、通常の配列と同様にインデックスを指定してアクセスすることができます。

ただし、共用体の要素は異なるデータ型を持つことができるため、要素へのアクセス時には適切なデータ型にキャストする必要があります。

以下に、共用体を使った配列の要素へのアクセス方法の例を示します。

#include <stdio.h>
typedef union {
    int intValue;
    float floatValue;
    char charValue;
} MyUnion;
int main() {
    MyUnion myArray[3];
    
    myArray[0].intValue = 10;
    myArray[1].floatValue = 3.14;
    myArray[2].charValue = 'A';
    
    printf("myArray[0].intValue: %d\n", myArray[0].intValue);
    printf("myArray[1].floatValue: %f\n", myArray[1].floatValue);
    printf("myArray[2].charValue: %c\n", myArray[2].charValue);
    
    return 0;
}

上記の例では、MyUnionという共用体を定義し、その共用体を要素とする配列myArrayを宣言しています。

配列の要素へのアクセスは、通常の配列と同様にインデックスを指定して行います。

要素へのアクセス時には、適切なデータ型にキャストして値を取得します。

共用体を使った配列の要素の変更方法

共用体を使った配列の要素の変更方法も、通常の配列と同様にインデックスを指定して行います。

要素の変更時には、適切なデータ型にキャストして値を代入します。

以下に、共用体を使った配列の要素の変更方法の例を示します。

#include <stdio.h>
typedef union {
    int intValue;
    float floatValue;
    char charValue;
} MyUnion;
int main() {
    MyUnion myArray[3];
    
    myArray[0].intValue = 10;
    myArray[1].floatValue = 3.14;
    myArray[2].charValue = 'A';
    
    printf("Before: myArray[0].intValue: %d\n", myArray[0].intValue);
    
    myArray[0].intValue = 20;
    
    printf("After: myArray[0].intValue: %d\n", myArray[0].intValue);
    
    return 0;
}

上記の例では、配列myArrayの要素の値を変更しています。

要素の変更は、通常の変数のように代入演算子を使って行います。

要素の変更後も、適切なデータ型にキャストされた値が保持されます。

共用体を使った配列の要素へのアクセス方法と要素の変更方法を理解することで、より柔軟なデータ構造を扱うことができます。

1 2
目次から探す