C: ユニオンは実際にどこで使用されますか? 質問する

C: ユニオンは実際にどこで使用されますか? 質問する

型の配置が保証される例、union max_align があります。友人に説明するために、union が実際に使用されるさらに簡単な例を探しています。

ベストアンサー1

私は通常、テキストを解析するときにユニオンを使用します。次のようなものを使用します。

typedef enum DataType { INTEGER, FLOAT_POINT, STRING } DataType ;

typedef union DataValue
{
    int v_int;
    float v_float;
    char* v_string;
}DataValue;

typedef struct DataNode
{
    DataType type;
    DataValue value;
}DataNode;

void myfunct()
{
    long long temp;
    DataNode inputData;

    inputData.type= read_some_input(&temp);

    switch(inputData.type)
    {
        case INTEGER: inputData.value.v_int = (int)temp; break;
        case FLOAT_POINT: inputData.value.v_float = (float)temp; break;
        case STRING: inputData.value.v_string = (char*)temp; break;
    }
}

void printDataNode(DataNode* ptr)
{
   printf("I am a ");
   switch(ptr->type){
       case INTEGER: printf("Integer with value %d", ptr->value.v_int); break;
       case FLOAT_POINT: printf("Float with value %f", ptr->value.v_float); break;
       case STRING: printf("String with value %s", ptr->value.v_string); break;
   }
}

共用体がいかに頻繁に使用されているかを確認したい場合は、以下のコードをチェックしてください。フレックス/バイソン例えば、添え木、大量のユニオンが含まれています。

おすすめ記事