C++ Birlik Örnekleri

C Birlik Ornekleri



Birleşim, C++'ta farklı veri türlerinin paylaşılan bir bellek konumunda depolanmasını sağlayan özel bir sınıf türüdür. Her parçanın genellikle kendi belleğini aldığı yapılardan farklı olarak birleşimler, farklı veri parçalarının aynı bellek konumunu kullanmasına izin verir. Bu özellik, birleştirmeleri özellikle bellek verimliliğinin öncelikli olduğu ve aynı anda üyelerden yalnızca birine erişilmesinin gerektiği durumlarda yararlı kılar. Bu makalede, C++'da birleşim kavramını derinlemesine inceleyeceğiz ve bunların çeşitli senaryolardaki faydalarını gösteren birden çok örneği inceleyeceğiz.

Sözdizimi:

Birleşim, kullanıcı tarafından tanımlanan ve farklı veri türlerinin paylaşılan bir bellek konumunda depolanmasını sağlayan bir türdür. Birleşim kullanmak, yapıyla aynı olan bir sözdizimini takip eder.







Temel sözdizimi aşağıdaki gibidir:



birlik BirlikAdı {

// Üye bildirimleri

DataType1 üye1 ;

DataType2 üye2 ;

//...

} ;

Burada 'UnionName', bu özel kullanıcı tanımlı türe referans vermek için benzersiz bir ad sağlayan birliğin tanımlayıcısı olarak görev yapar. Birlik üyelerinin veri türleri “DataType1”, “DataType2” vb. olarak gösterilir. Bu veri türleri, birlik içinde depolanabilecek çeşitli bilgi türlerini belirtir. Birliğin “üye1”, “üye2” gibi isimlerle anılan her üyesi ayrı bir veriyi temsil ediyor.



Artık temel sözdizimini anlıyoruz. Şimdi bunu daha iyi anlamak için birkaç örnek kullanalım.





Örnek 1: Temel Birlik Kullanımı

İlk örnek, C++'da birleşimlerin temel kullanımını gösterir ve tek bir yapı içinde farklı veri türleri arasında bellek alanının paylaşılmasını nasıl sağladıklarını gösterir.

İşte bir örnek:



#include

ad alanı std'sini kullanma ;

birlik Dizi Birliği {

int intArray [ 5 ] ;

batmadan yüzmek floatArray [ 5 ] ;

} ;

int ana ( ) {

DiziBirliği diziBirliği ;

için ( int Ben = 0 ; Ben < 5 ; ++ Ben ) {

dizi Birliği. intArray [ Ben ] = Ben * 2 ;

}

cout << 'Dahili Dizi:' ;

için ( int Ben = 0 ; Ben < 5 ; ++ Ben ) {

cout << ' ' << dizi Birliği. intArray [ Ben ] ;

}

cout << sonunda ;

için ( int Ben = 0 ; Ben < 5 ; ++ Ben ) {

dizi Birliği. floatArray [ Ben ] = Ben * 1,5f ;

}

cout << 'Kayan Dizi:' ;

için ( int Ben = 0 ; Ben < 5 ; ++ Ben ) {

cout << ' ' << dizi Birliği. floatArray [ Ben ] ;

}

cout << sonunda ;

geri dönmek 0 ;

}

Bu C++ kod parçacığında, üç farklı veri üyesini birleştiren “MyUnion” adlı bir birleşim kullanıyoruz: bir tam sayı (intValue), bir kayan noktalı sayı (floatValue) ve bir karakter (charValue). Sendikanın hafıza alanını paylaşma yeteneğinden dolayı herhangi bir noktada bu üyelerden yalnızca biri aktif olabilir.

“Ana” fonksiyon içerisinde birliğin bir örneğini “myUnion” olarak ilan ediyoruz. Öncelikle tamsayı üyenin değerini 42 olarak ayarlayıp “cout” kullanarak yazdırıyoruz. Daha sonra 3.14 kayan nokta değerini “floatValue” üyesine atayıp yazdırıyoruz. Son olarak “charValue” üyesine “A” karakterini atayıp yazdırıyoruz. Tüm sendika üyeleri aynı hafıza konumunu paylaştığından, bir üyeyi değiştirmenin diğer üyelerin değerlerini etkileyebileceğini unutmamak önemlidir. Kod, başarılı bir yürütme anlamına gelen 0 değerini döndürerek sona erer.

Örnek 2: Yapı ile Birleşim

Yapı, C++ dilinde kullanıcıların çeşitli türlerdeki değişkenleri tek bir birleşik ad altında birleştirmek için oluşturabilecekleri bir veri türüdür. Farklı veri türlerini tutabilen ve her türün belirli bir alanla ilişkilendirildiği bir veri yapısı oluşturmak istediğimizde, bir birleşimi bir yapıyla birleştirmek yararlı olabilir. Bu eşleştirme, farklı temsillere sahip karmaşık veri yapılarının geliştirilmesine olanak tanır.

İşte C++'da bir yapı içinde birleşim kullanmanın bir örneği:

#include

ad alanı std'sini kullanma ;

yapı Nokta {

int s1 ;

int s2 ;

} ;

birlik Şekil {

int taraflar ;

batmadan yüzmek yarıçap ;

Nokta merkezi ;

} ;

int ana ( ) {

Şekil şekli ;

şekil. taraflar = 5 ;
cout << 'Taraflar:' << şekil. taraflar << sonunda ;

şekil. yarıçap = 6.0f ;
cout << 'Yarıçap: ' << şekil. yarıçap << sonunda ;

şekil. merkez = { 10 , yirmi } ;
cout << 'Merkez: (' << şekil. merkez . s1 << ', ' << şekil. merkez . s2 << ')' << sonunda ;

geri dönmek 0 ;

}

Bu kodda, geometrik bir şeklin farklı yönlerini temsil etmek için birleşim ve yapı kullanan bir C++ programı tanımlıyoruz. İlk olarak, 2 boyutlu uzayda bir noktanın koordinatlarını temsil eden “s1” ve “s2” olmak üzere iki tamsayı üyeden oluşan bir “Nokta” yapısı ilan ediyoruz. Daha sonra, üç üyeden oluşan “Şekil” adında bir “birleşim” tanımlarız: bir “kenar” tamsayı, bir “yarıçap” kayan nokta ve “merkez” adlı bir “Nokta” yapısı. “Ana” fonksiyona geçerek “shape” adında bir “Shape” nesnesini başlatıyoruz. Daha sonra farklı üyelerine değerler atayarak birliğin çok yönlülüğünü gösteriyoruz. Başlangıçta kenar sayısını 5 olarak ayarlayıp sonucu yazdırıyoruz. Daha sonra şekle 6,0 yarıçapı atarız ve yarıçapın çıktısını alırız. Son olarak şekle (10, 20) koordinatlı bir merkez noktası atayıp merkezin koordinatlarını yazdırıyoruz.

Örnek 3: Enum ile Birleşme

C++'da, genellikle numaralandırma olarak adlandırılan numaralandırmalar, adlandırılmış integral sabitlerin bir koleksiyonunu tanımlama amacına hizmet eder. Numaralandırmaları birleşimlerle birleştirmek, her biri belirli bir numaralandırma değeriyle ilişkilendirilen farklı türleri alabilen bir değişkeni temsil etmek istediğimiz senaryolarda yararlı olabilir.

İşte bir örnek:

#include

ad alanı std'sini kullanma ;

Sıralama Veri tipi {

TAM SAYI ,

BATMADAN YÜZMEK ,

KAR

} ;

birlik Veri değeri {

int intValue ;

batmadan yüzmek kayan değer ;

karakter karakter Değeri ;

} ;

yapı Veri {

Veri Türü türü ;

DataValue değeri ;

} ;

int ana ( )

{

Veri verileri1 , veri2 , veri3 ;

veri1. tip = TAM SAYI ;
veri1. değer . intValue = 42 ;

veri2. tip = BATMADAN YÜZMEK ;
veri2. değer . kayan değer = 3.14f ;

veri3. tip = KAR ;
veri3. değer . karakter Değeri = 'A' ;

cout << 'Veri 1:' << veri1. değer . intValue << sonunda ;
cout << 'Veri 2:' << veri2. değer . kayan değer << sonunda ;
cout << 'Veri 3:' << veri3. değer . karakter Değeri << sonunda ;

geri dönmek 0 ;

}

Bu örnekte, farklı türdeki değerleri tutabilen esnek bir veri yapısı oluşturmak için numaralandırmaları, birleşimleri ve yapıları kullanan bir programımız var. “DataType” numaralandırması üç temel veri türünü temsil edecek şekilde tanımlanır: INTEGER, FLOAT ve CHAR. Numaralandırma, bir dizi adlandırılmış integral sabiti sunarak kodun okunabilirliğini ve sürdürülebilirliğini artırır.

Daha sonra üç üyeli “DataValue” adında bir birlik oluşturuyoruz: char türünden “charValue”, float türünden “floatValue” ve int türünden “intValue”. Bir birlik ile bu üyeler, birliğin farklı türdeki değerleri birbirinin yerine kullanılabilir şekilde barındırmasına olanak tanıyan ortak bir hafıza konumunu paylaşırlar. Daha sonra iki üyeden oluşan “Data” yapısı oluşturulur: “type” adında bir “DataType” numaralandırıcı ve “value” adında bir “DataValue” birliği. Bu yapı, yapılandırılmış bir gösterim sağlayarak bir veri türünü karşılık gelen değerle ilişkilendirmemize olanak tanır.

“Ana” fonksiyonda “Veri” yapısının üç örneğini başlatıyoruz: “data1”, “data2” ve “data3”. Veri tipini belirterek ve birleşim içerisinde uygun değeri ayarlayarak bu örneklere değerleri atarız. Örneğin “data1”e 42 değerinde bir INTEGER türü atanıyor. Son olarak her “Data” örneğinde saklanan değerleri yazdırmak için “cout” ifadelerini kullanıyoruz. Program “data1”in tamsayı değerini, “data2”nin kayan nokta değerini ve “data3”ün karakter değerini çıkarır.

Bu örnek, C++'da çok yönlü ve tür açısından güvenli bir veri temsili oluşturmak için numaralandırmaların, birleşimlerin ve yapıların birleştirilmesinin nasıl kullanılabileceğini gösterir.

Çözüm

C++ birleşimleri, tek bir bellek alanı içindeki farklı veri türlerini yönetmek için güçlü ve esnek bir mekanizma sağlar. Bu makalede gösterilen örnekler, sendikaların bir dizi senaryoyu ele alma konusundaki uyarlanabilirliğini ve etkinliğini vurgulamaktadır. Veri türlerinin birbiriyle değiştirilebilirliğini gösteren temel kullanımlardan, yapıları ve numaralandırmaları içeren daha karmaşık uygulamalara kadar bu örnekler, birleşimlerin C++ programlamaya getirdiği verimliliğin ve uyarlanabilirliğin altını çiziyor.