duyuruElektroArge.com'a Hoşgeldiniz. Üye Olmak İçin Tıklayın. duyuru





houseForum ana sayfa   iletişimİletişim   bilgiSSS  
kırmızı yeşil mavi
ekleKayıt  anahtarGiriş
evForum ana sayfa goE-Kütüphane goE-Ders goC
 

  • Reklam

Ders 48 İç İçe(Nested) Yapılar

C Dili Dersleri - Okan Bilke

Ders 48 İç İçe(Nested) Yapılar

Mesajgönderen okanbilke » 03 Mar 2014 02:00

C'de yapılar iç içe tanımlanabilir. Diğer bir deyişle bir yapı, içinde başka bir yapıyı içerebilir:
struct aday_bilgi
{
char *isim;
char *soyisim;
char *lisans_egitim;
int les_notu;
int tel;
};

struct mulakat_kaydir
{
char *mulakati_yapan;
char *mulakat_tarih;
struct aday_bilgi aday;
int mutlaka_notu;
};

Yukarıdaki dizilimlerde iki adet yapı görünüyor: aday_bilgi ve mulakat_kayit. Bu yapıların, yüksek lisans eğitimi için başvuran adayların kayıtlarının tutulduğu bir üniversitede kullanıldığını düşünelim. Burada mülakat sonuçlarını tutmak için mulakat_kayit isimli bir yapı kullanıyoruz. Bu yapı içerisinde dört farklı bilgi vardır:
  • Adayın mülakatını yapan kişi (mulakati_yapan)
  • Mülakat tarihi (mulakat_tarih)
  • Mülakata giren aday ile ilgili bilgiler (aday)
    • Adayın ismi (isim)
    • Adayın soyismi (soyisim)
    • Adayın lisans eğitimi (lisans_egitim)
    • Adayın LES sınav notu (les_notu)
    • Adayın telefon numarası (tel)
  • Mülakat sonucunda adaya verilen not (mulakat_notu)
Gördüğümüz gibi 13. satırda, mulakat_kayit yapısı içerisinde, aday_bilgi yapı türünde bir değişken var. Şimdi bu değişkenin nasıl kullanılacağını görelim.
Öncelikle, daha önce yaptığımız gibi mulakat_kayit türünde bir değişken tanımlamamız gerekiyor:
struct mulakat_kayit mk01;

Daha sonra mulakat_kayit türündeki mk01 isimli değişkenimizi kullanarak değişkene çeşitli değerler atayacağız:
mk01.mulakati_yapan = "Okan Bilke";
mk01.mulakat_tarih = "03.03.2014";

// aday bilgileri:
mk01.aday.isim = "Goksu";
mk01.aday.soyisim = "Tuna";
mk01.aday.lisans_egitim = "Orta Dogu Teknik Universitesi, Mimarlik";
mk01.aday.yas = 21;
mk01.aday.les_notu = 77;
mk01.aday.lisans_ortalamasi = 2.52;
mk01.aday.tel = 1234567;

mk01.mulakat_notu = 90;

5. satırda bir yapı içerisinde bulunan başka yapı elemanının nasıl kullanıldığına dikkat ediniz:
mk01.aday.isim = "Göksu";
Şimdi bu örneği program haline getirelim:
[code2=c]//Ice_Ice_Yapilar.c - 02.03.2014 - Okan BİLKE -www.elektroarge.com

#include <stdio.h>

struct aday_bilgi
{
char *isim;
char *soy_isim;
char *lisans_egitim;
int yas;
int les_notu;
float lisans_ortalamasi;
int tel
};

struct mulakat_kayit
{
char *mulakati_yapan;
char *mulakat_tarih;
struct aday_bilgi aday;
int mulakat_notu;
};

int main()
{
struct mulakat_kayit mk01;

mk01.mulakati_yapan = "Okan Bilke";
mk01.mulakat_tarih = "03.03.2014";

// aday bilgileri:
mk01.aday.isim = "Goksu";
mk01.aday.soy_isim = "Tuna";
mk01.aday.lisans_egitim = "Orta Dogu Teknik Universitesi, Mimarlik";
mk01.aday.yas = 21;
mk01.aday.les_notu = 77;
mk01.aday.lisans_ortalamasi = 2.52;
mk01.aday.tel = 1234567;

mk01.mulakat_notu = 90;

// daha sonra bu bilgileri istediğimiz gibi kullanırız:
printf("mulakati yapan: %s\n", mk01.mulakati_yapan);
printf("aday isim: %s\n", mk01.aday.isim);
printf("aday soyisim: %s\n", mk01.aday.soy_isim);
printf("aday les notu: %d\n", mk01.aday.les_notu);

return 0;
}
//bu dosya elektroarge.com'dan indirilmiştir.

Ekran çıktısı:
mulakati yapan: Okan Bilke
aday isim: Goksu
aday soyisim: Tuna
aday les notu: 77

Biz yapıları iç içe kullanırken bir yapıyı, diğer yapı içinde tanımladık. İç içe yapıların bir diğer kullanımı da yapının bildirimini doğrudan diğer yapı içinde yapmaktır. Yukarıdaki mülakat örneğini ele alırsak, aday_bilgi isimli yapının bildirimini doğrudan mulakat_kayit yapısı içerisinde yapabilirdik:
struct mulakat_kayit
{
char *mulakati_yapan;
char *mulakat_tarih;
struct aday_bilgi
{
char *isim;
char *soyisim;
char *lisans_egitim;
int les_notu;
int tel;
};
int mulakat_notu;
};

Bu tür kullanımda ayrıca aday isminde bir değişkenimiz olmayacağı için aday_bilgi içerisindeki elemanlara doğrudan mulakat_kayit türündeki değişken ile erişeceğiz:
// yapıyı tanımla
struct mulakat_kayit mk01;

mk01.mulakat_tarih = "03.03.2014";
mk01.isim = "Goksu Tuna";

5. satırda, aslında aday_bilgi yapısına ait olan isim elemanının doğrudan mk1 değişkeni ile kullanılabildiğine dikkat ediniz.

Ders İçinde Yazılmış Tüm Programlar ve Kodları Ektedir:
Mesaj içeriğini görmek için kayıt ve giriş gerektirir

DERS 44-48 BÖLÜM ÖZETİ

C Dili Dersleri Ders Listesi
okanbilke@gmail.com
Kullanıcı avatarı
okanbilke
Site Kurucusu
Site Kurucusu
 
Mesajlar: 721
Beğendiklerim: 0 mesaj
Beğenilenlerim: 0 mesaj
Kayıt: 15 Mar 2013 13:09
Konum: Ankara

Reklam

Dön C

Kimler çevrimiçi

Bu forumu gezen kullanıcılar: Hiç bir kayıtlı kullanıcı yok ve 0 misafir


  • Reklam
cron