Tam Sürümünü Görmek İçin : Union nedir?
Eski bir pascal-delphi programcısıyım. herhalde bu yuzden c yi cabuk kavradım ama union yapısına pascalda hiç raslamadım. unionlar nedir ne iş yaparlar. neerelerde kullanılırlar. bu konuya ilişkin kaynak varmı.saygılar.
seyduna27
20/06/2003, 15:23
http://www.pdc.kth.se/doc/SP/manuals/ibmcxx-3.6.6/html/language/ref/rucldun.htm
slm eger bu linke gidersen. union la ilgili guzel seyler var. union nedir?nerde kullanilir? bir klastan farki nedir gibi... ornekli vede semali aciklamar var. sadece ve guzel anlatilmis. vede cok uzun ollmayan bir document
tek problem document ingilizce:) ama ingilizcen iyi degilsede sorun etme, cunku basit vede sadece aciklanmis. biraz kafa yorarsan cozersin
yoksa burda unionu anlatmak. yani sana bir faydasi olmaz. ordan daha cok sey kaparsin
selamlar
dionysos
16/07/2003, 12:35
Merhaba fobus,
union (birlik) lar bellekte aynı alan paylaşan değişkenler topluluğudur. Örnek olarak bir structure (yapı) tanımladığında bu yapının elemanlarına ayrı ayrı değerler verebilirsin. Ancak bir birlikte 2 tane tamsayı elemanı varsa ve birine 5 değerini verirsen diğeri de 5 olur. Bir de eğer değişkenlerinin bellekte kapladığı alanlar farklıysa (Örneğin int (4 byte), char (1 byte) olsun) kısa alan kaplayan char değişkenine değer verdiğinizde int değişkeninin son 3 byte'ı değişmez.
Libertador
18/07/2003, 13:00
Union kullanimi uzerine bir ornek:
struct KAYIT{
char ad[30];
char soyad[30];
union{
char stajyer_not[50];
int maas;
} odeme;
}sahis1;
Diyelim ki bir sirkette stajyerler ve calisanlar var. Calisanlar maas alirken stajyerler icin bir not dusuluyor. Struct icerisinde yazdiginizda ikisi icin de bellekte ayri yer ayrilacaktir. Ama union ile bellekte ayni yer ayriliyor. Boylece yer kazanci ve okuma kolayligi sagliyor. Bellekte nasil ayrildigina gelince en uzun degisken olan char dizisi icin stajyer_not adresinden baslayarak 50 byte ayrilir. int turunde degisken icin de yine unionun baslangic adresi olan stajyer_nottan baslayarak yer ayrilir. Istedigimiz kadar degisken tanitalim hepsi bu adresten baslayarak yerlestirelecektir.
Gelelim bunun faydalarina ve zararlarina. Yukaridaki gibi biri varken digeri olmayan farkli turden degiskenler tutacaksak yer kazanci saglar. Ya da bir degiskeni degistirdigimizde digerlerinin de degistirmek istiyorsak yine union kullanmamiz gerekecektir. Diyelim ki; x 'e 12345678 atadik o zaman stajyer_not[0]=5678 stajyer_not[1]=1234 olacaktir.
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.