CodeBlanks Logo Icon CodeBlanks

İç içe struct

  • C kursu
  • Başlangıç
  • Ders 98/116
  • 5 dk

Bir struct'ın içinde başka struct kullanmayı öğrenirsin.

İç içe struct

Bir struct'ın üyesi başka bir struct olabilir. Bu, karmaşık verileri modellerken çok kullanışlıdır.

struct Point { int x; int y; };

struct Rectangle {
    struct Point topleft;
    struct Point bottomright;
};

Burada Rectangle iki Point içerir: topleft ve bottomright. İçteki üyeye erişmek için noktayı peş peşe kullanırsın: r.topleft.x. Bu, bir dikdörtgeni iki köşesiyle temsil etmenin doğal yoludur.

İç içe struct örneği

Bir Rectangle yapı değişkeni tanımlarken içteki Point'leri de süslü parantezle verebilirsin.

struct Rectangle r = {
    {0, 0},
    {10, 5}
};
printf("%d %d\n",
    r.topleft.x,
    r.bottomright.y);
// "0 5"

Burada dış süslü parantez Rectangle'ı, iç süslü parantezler ise iki Point'i sarar. r.topleft.x ile sol üst köşenin x'ini alırsın. Bu yapı, grafik ve oyun programlamada çok sık görülür.

Uygulama Rectangle köşelerini yazdır

struct Point'i (int x, int y) tanımla. struct Rectangle'ı (struct Point topleft, struct Point bottomright) tanımla. main içinde r = {{0, 0}, {10, 5}} ile bir değişken oluştur ve dört koordinatını printf ile yazdır.

Başlangıç kodu

main.c
#include <stdio.h>

struct Point { int x; int y; };

/* struct Rectangle tanımla: topleft ve bottomright Point'leri */
int main(void) {
    /* bir Rectangle oluştur; printf ile dört koordinatını yazdır */
    return 0;
}

Örnek çözüm

main.c
struct Rectangle { struct Point topleft; struct Point bottomright; };
struct Rectangle r = {{0, 0}, {10, 5}};
printf("%d %d %d %d\n", r.topleft.x, r.topleft.y, r.bottomright.x, r.bottomright.y);

Beklenen çıktı

0 0 10 5

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 İfade ve anlam eşleştir

Kavram Anlamı
r.topleft Sol üst nokta
r.bottomright Sağ alt nokta
r.topleft.x Sol üstün x koordinatı
struct Point İç tür

2 Boşluğu doldur: iç içe üye

Soru
printf("%d
", r____);
Cevap
printf("%d
", r.topleft.x);

Açıklama: r.topleft.x ile iç üyeye inilir.

3 r.topleft.x ifadesi neyi verir?

  • bottomright'ın x koordinatı
  • topleft noktasının x koordinatı
  • Rectangle'ın x koordinatı Doğru cevap
  • topleft işaretçisi

Açıklama: r.topleft.x ile topleft'in x üyesi alınır.

Başlangıç bölümündeki tüm dersler