İç 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
#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
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
printf("%d
", r____);
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.