YAPILAR
Yapılar (structures) da diziler gibi birden fazla nesneyi içlerinde tutabilen bir veri türürdür. Yapıların da elemanları bellekte ardışıl (contigious) bir biçimde bulunur. Fakat yapıların dizilerden temel farkı şudur: Diziler aynı türden nesneleri içinde tutabilirken, yapılar farklı türlerden nesneleri tutabilirler. Yapıların kullanılmasının ana nedeni budur. Çoğu zaman, türleri farklı bir takım nesneler, mantıksal olarak bir bütün oluşturabilirler. İsim, yaş, departman, ücret, öğrenim durumu gibi bilgileri farklı türden nesneler içinde saklayabiliriz ve bunların tamamı çalışan bir personele ait bilgiler olabilir. Bu gibi aynı konu ile ilgili farklı türden veriler yapılar içinde saklanır.
Yapı Bildiriminin Genel Şekli
struct [yapı ismi] {
tür m1 ;
tür m2 ;
tür m3 ;
…
};
Yukarıdaki gösterimde struct bir anahtar sözcüktür. Bildirimde mutlaka yer alması gerekmektedir. Yapı ismi (structure tag) C dilinin isimlendirme kurallarına uygun olarak seçilmiş bir isimdir.
Örnek bildirimler:
struct SAMPLE {
int a;
long b;
char ch;
};
struct DATE {
int day, month, year;
};
struct POINT {
int x, y;
};
Yapı isimleri (structure tags) geleneksel olarak büyük harfle yazılır. Bu bir zorunluluk değildir.
Yapı bildiriminin yapılması bellekte derleyici tarafından bir yer ayrılmasına neden olmaz. Yani bir tanımlama (definition) söz konusu değildir. Bu bildirimle (declaration) programcının yarattığı yeni bir veri türü hakkında derleyiciye bilgi verilmektedir.
Yapı bildiriminin yapılmasından sonra artık bildirimi yapılmış yapı türünden nesneler tanımlanabilir. Yapı bilidiriminin yapılması ile yeni bir veri türü yaratılmıştır. Derleyici artık bu tür hakkında bilgi sahibi oldugundan, bu yeni veri türünden, nesneler tanımlanabilir. Yeni veri türünden nesnelerin tanımlanması durumunda artık derleyici bu nesneler için bellekte ne kadar bir alan ayırması gerektiği bilgisine sahip olacaktır.
Yapı Türünden Nesne Tanımlaması
struct yapı isimi nesne ismi ;
Örnekler :
struct DATE x; /* x DATE yapısı türünden bir nesnedir. */
struct POINT p1, p1; /* p1 ve p2 POINT yapısı türünden nesnelerdir. */
struct SAMPLE sample; /* sample SAMPLE yapı türünden bir nesnedir. */
Yapı değişkenleri bileşik nesnelerdir. Yani parçalardan oluşurlar. Zaten yapı bildirimlerinin yapılmasının amacı da bu parçaların isimleri ve türleri hakkında derleyiciye bilgi vermektir. Bir yapı bildirimini gören derleyici, daha sonra bildirimi yapılan yapı türünden bir değişken tanımlanması durumunda, bu değişken için bellekte ne kadar yer ayıracağını, ve ayırdığı yeri ne şekilde organize edeceğini bilir.
Bir yapı değişkeni (nesnesi) için, yapı bildiriminde belirtilen elemanların toplam uzunluğu kadar (byte olarak) yer ayrılır.
struct SAMPLE {
int a;
long b;
char ch;
};
void main()
…
Yorum Yok.