İç içe struct
- C kursu
- Orta seviye
- Ders 33/116
- 5 dk
İç içe struct ve composition öğrenirsin.
İç içe struct
Bir struct, başka bir struct türü içerebilir. Buna iç içe struct denir. Bu, veriyi anlamlı parçalara bölmenin doğal yoludur.
Örnek: struct Date { int day, month, year; }; ve struct Event { char title[64]; struct Date when; };. Burada when alanı bir struct Date'tir. Erişim noktayla zincirlenir: e.when.day. İç struct'ı önce tanımlamak şarttır; böylece derleyici boyutu bilir. Bu desen, veriyi modellerken composition sağlar.
İç içe struct örneği
İç içe struct, gerçek dünya verisini modellerken yararlıdır. Örneğin bir kişinin adresi ayrı bir struct olabilir.
Örnek: struct Address { char city[32]; int zip; }; ve struct Person { char name[32]; struct Address addr; };. Şehir erişimi: p.addr.city. Bu yapı, adres bilgisini kişiye gömer; tek bir struct'ta toplar. Adres başka bir yerde de kullanılacaksa aynı struct Address tanımı yeniden kullanılabilir. Modülerlik artar, kod tekrarı azalır.
Uygulama Tarih içeren event oluştur
struct Date tanımla: int day, month, year;. struct Event tanımla: char title[64]; ve struct Date when;. main içinde struct Event e; yaz; e.when.day = 15;, e.when.month = 3;, e.when.year = 2025; ata. printf("%d.%d.%d\n", e.when.day, e.when.month, e.when.year); ile yazdır.
Başlangıç kodu
#include <stdio.h>
// struct Date tanımla (day, month, year)
// struct Event tanımla (title[64] ve struct Date when)
// main'de e tanımla, when alanlarını ata, tarihi yazdır
int main(void) {
return 0;
}Örnek çözüm
#include <stdio.h>
struct Date {
int day, month, year;
};
struct Event {
char title[64];
struct Date when;
};
int main(void) {
struct Event e;
e.when.day = 15;
e.when.month = 3;
e.when.year = 2025;
printf("%d.%d.%d\n", e.when.day, e.when.month, e.when.year);
return 0;
}Beklenen çıktı
15.3.2025
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 e içindeki when'in day alanına nasıl erişilir?
- e.when->day
- e->when.day
- e.when.day Doğru cevap
- when.e.day
Açıklama: İç içe struct erişimi noktayla zincirlenir.
2 Erişim biçimlerini eşle
| Kavram | Anlamı |
|---|---|
e.when.day |
İç içe alan erişimi |
e.when |
İç struct değişkeni |
struct Date |
İç struct türü |
e.title |
Dış struct alanı |
3 İç içe alan ata
struct Event e;
e____.day = 15;
struct Event e;
e.when.day = 15;
Açıklama: e.when.day biçiminde iç içe erişim sağlanır.