Рубрики

Анонимный Союз и Структура в C

В стандарте C11 C были добавлены анонимные союзы и структуры.

Анонимные союзы / структуры также известны как безымянные союзы / структуры, так как у них нет имен. Поскольку имен нет, прямые объекты (или переменные) из них не создаются, и мы используем их во вложенных структурах или объединениях.

Определение такое же, как и у обычного объединения, без имени или тега. Например,

// Anonymous union example
union 
{
   char alpha;
   int num;
};
// Anonymous structure example
struct 
{
   char alpha;
   int num;
};

Поскольку нет ни переменной, ни имени, мы можем получить прямой доступ к членам. Эта доступность работает только внутри области, где определено анонимное объединение.

Ниже приводится полный рабочий пример анонимного союза.

// C Программа для демонстрации работы анонимного союза
#include<stdio.h>

struct Scope

{

    // Анонимный союз

    union

    {

        char alpha;

        int num;

    };

};

  

int main()

{

    struct Scope x;

    x.num = 65;

  

    // Обратите внимание, что члены объединения доступны напрямую

    printf("x.alpha = %c, x.num = %d", x.alpha, x.num);

  

    return 0;

}

Выход:

x.alpha = A, x.num = 65

// C Программа для демонстрации работы анонимной структуры
#include<stdio.h>

struct Scope

{

    // Анонимная структура

    struct

    {

        char alpha;

        int num;

    };

};

  

int main()

{

    struct Scope x;

    x.num = 65;

    x.alpha = 'B';

  

    // Обратите внимание, что члены структуры доступны напрямую

    printf("x.alpha = %c, x.num = %d", x.alpha, x.num);

  

    return 0;

}

Выход:

x.alpha = B, x.num = 65

А как насчет C ++?
Анонимные объединения и структуры НЕ являются частью стандарта C ++ 11, но большинство компиляторов C ++ поддерживают их. Поскольку это только функция C, реализации C ++ не позволяют анонимной структуре / объединению иметь закрытые или защищенные члены, статические члены и функции.

Эта статья предоставлена Никитой Раджем . Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью и отправить ее по почте на contrib@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Анонимный Союз и Структура в C

0.00 (0%) 0 votes