Союз, хранящий предыдущую часть программы - PullRequest
0 голосов
/ 13 апреля 2019

Как и было задано ранее в моем назначении, мне нужно было просто исправить две функции, часть (а) касалась «enum», а часть b - «структура»

Теперь она просит меня создать объединение, которое может хранитьлибоПеречисление в части (а) б.Структура в части (б) в.Один символ.

я очень запутался .. Что это за "либо"?

Здесь я упоминаю код части (а) и части (б)

а)

enum FavouriteFruits
{
    Cherries=4,
    Pears = 1,
    Berries = 2,
    Plums = 5
};

 int main (int argc, char* argv[])
{

    printf("Cherries are %d \n", Cherries);
    printf("Pears are %d \n" , Pears);
    printf("Berries are %d \n", Berries);
    printf("Plums are %d \n", Plums);

    return 0;
}

б)

struct realnumber
{
    float array [2][3];
    char* (*function)(int);
};

1 Ответ

0 голосов
/ 13 апреля 2019

Объединение - это тип, который использует одну и ту же память для хранения значения, которое может быть одним из нескольких различных типов.

union myUnion {
    enum FavouriteFruits ff;
    struct realnumber rn;
    char c;
};

Теперь вы можете объявить переменную этого типа:

union myUnion u;

и присваивайте любому члену, точно так же, как присваивая члену структуры.

u.c = 'a';
u.ff = Pears;

Отличие от struct состоит в том, что все они совместно используют одну и ту же память.Когда вы присваиваете u.ff, он перезаписывает u.c.Таким образом, вы можете читать только от того участника, которому вы последний раз назначены.Вы несете ответственность за то, чтобы отслеживать, кто из них был.См. Как можно хранить смешанный тип данных (int, float, char и т. Д.) В массиве? для метода, называемого теговым объединением , который можно использовать для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...