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ı bildirimiYapı 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 optNiteleyici türü belirticisi niteleyici listesinde opt
Yapı Bildiricisi listesi:
Yapı BildiricisiYapı 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