Aracılığıyla paylaş


Sendika bildirimleri

"Birleşim bildirimi" değişken değerlerini ve isteğe bağlı olarak bir etiket Birliği adlandırma kümesini belirtir.Değişken değerlerini sendika "üyesi" olarak adlandırılır ve farklı türlerde olabilir.Diğer dillerde "varyant kayıtları" sendikalar benzer.

Sözdizimi

  • struct veya union belirleyici:
    struct veya union tanımlayıcı kabul**{** Yapı beyanname listesindeki }

    struct veya union tanımlayıcısı

  • struct veya union:
    Yapı

    union

  • Yapı beyanname listesindeki:
    Yapı bildirimi

    Yapı beyanname listesindeki yapı-bildirimi

Birleşim içeriği olarak tanımlanmalıdır

  • Yapı bildirimi:
    belirleyici niteleyici listesinde yapı Bildiricisi listesi ;

  • belirleyici niteleyici listesinde:
    tür belirleyici belirleyici niteleyici listesinde opt

    Niteleyici türü belirticisi niteleyici listesinde opt

  • Yapı Bildiricisi listesi:
    Yapı Bildiricisi

    Yapı Bildiricisi listesi , Yapı Bildiricisi

Bir değişkenle Birliği bu tür tarafından tanımlanan değerlerden biri türünü saklar.Aynı kurallar, yapısı ve Birliği bildirimleri kapsar.Sendikalar alanları bit.

Sendika üyeleri yazın, tamamlanmamış bir türü olan void, veya işlevi yazın.Bu nedenle üyeler Birliği örneği olamaz ancak bildirilen birleşim türü işaretçisi olabilir.

Şablon yalnızca bir birleşim türü bildirimdir.Değişkeni kadar bellek ayrılmış değil.

[!NOT]

UNION iki bildirilir ve bir değeri saklanır, ancak birleşim türü ile erişilen, sonuçları güvenilmez.Örneğin, bir sendikaya float ve int bildirilir.A float değeri depolanır, ancak program daha sonra değer olarak erişen bir int.Dahili depolama, böyle bir durumda, değeri değişir float değerler.Tamsayı değeri güvenilir olmayacaktır.

Örnekler

Sendikalar örnekleri şunlardır:

union sign   /* A definition and a declaration */
{
    int svar;
    unsigned uvar;
} number;

Bu örnek bir sendika değişkenle tanımlar sign adlı bir değişken bildirir ve yazın number iki üyesi olan: svar, imzalı bir tamsayı ve uvar, imzalanmamış bir tamsayı.Bu bildirim geçerli değerini verir number işaretli veya işaretsiz bir değer olarak saklanırlar.Bu birleşim türü ile ilişkili etiket sign.

union               /* Defines a two-dimensional */
{                   /*  array named screen */
    struct    
    { 
      unsigned int icon : 8;  
      unsigned color : 4;
    } window1;
    int screenval;
} screen[25][80];

screen Dizi 2.000 öğeleri içerir.Dizinin her öğesi bir iki üyeleriyle tek tek birleşimdir: window1 ve screenval.window1 Üye olduğu iki bit alanı üyeleriyle bir yapı icon ve color.The screenval member is an int.Herhangi bir anda, her sendika öğe ya da tutan int tarafından temsil edilen screenval veya gösterdiği yapı window1.

Microsoft özel

Başka bir yapı veya Birliği üyesi olduğunda iç içe sendikalar anonim olarak bildirilebilir.Bu, adsız sayaç birleşim örneğidir:

struct str
{
    int a, b;
    union            / * Unnamed union */
    {
      char c[4];
      long l;
      float f;
   };
   char c_array[10];
} my_str;
.
.
.
my_str.l == 0L;  /* A reference to a field in the my_str union */

Sendikalar genellikle herhangi bir belirli zamanda sendikaya içerdiği veri türünü veren bir alan içeren bir yapı içinde yuvalanmıştır.Bu bildirimi aþaðýdaki gibi bir birleşim örneğidir:

struct x
{
    int type_tag;
    union
    {
      int x;
      float y;
    }
}

Bkz: yapısı ve sendika üyeleri sendikalar başvurma hakkında daha fazla bilgi için.

SON Microsoft özel

Ayrıca bkz.

Kavramlar

Declarators ve değişken bildirimleri