CodeBlanks Logo Icon CodeBlanks

Özet - İleri yapılar

  • C kursu
  • Orta seviye
  • Ders 35/116
  • 5 dk

Struct işaretçi, dinamik struct ve diziyi birleştirerek bir kişi veritabanı yazarsın.

Özet - İleri yapılar

Bu özette ileri struct kavramlarını birleştirerek bir kişi veritabanı yazacaksın. Grup boyunca struct işaretçiyi, dinamik struct'ı, işaretçi parametreli fonksiyonu, iç içe struct'ı ve struct dizisini öğrendin.

Veritabanı şu parçaları kullanır: struct Person tanımı, malloc ile 3 elemanlı dizi, for döngüsüyle erişim ve her elemanın age alanını yazdırma. Bu parçalar gerçek bir uygulamada kayıt ekleme, arama ve sıralama fonksiyonlarına temel oluşturur. C'de veri tabanları, oyun kayıtları ve yapılandırma sistemleri bu desenle başlar.

Uygulama Kişi veritabanı yaz

struct Person tanımla: char name[32]; ve int age;. main içinde struct Person *people = malloc(3 * sizeof(struct Person)); ile dinamik dizi ayır. if (people == NULL) return 1; denetle. people[0].age = 30;, people[1].age = 25;, people[2].age = 35; ata. for döngüsüyle her yaşı printf("%d\n", people[i].age); ile yazdır. Son olarak free(people); çağır.

Başlangıç kodu

main.c
#include <stdio.h>
#include <stdlib.h>

// struct Person tanımla (name[32] ve age)
// malloc ile 3 elemanlı struct Person dizisi ayır
// for ile her age alanını ata ve yazdır, sonunda free çağır

int main(void) {
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>
#include <stdlib.h>

struct Person {
    char name[32];
    int age;
};

int main(void) {
    struct Person *people = malloc(3 * sizeof(struct Person));
    if (people == NULL) return 1;
    people[0].age = 30;
    people[1].age = 25;
    people[2].age = 35;
    for (int i = 0; i < 3; i++) {
        printf("%d\n", people[i].age);
    }
    free(people);
    return 0;
}

Beklenen çıktı

30
25
35

Özet

Bu grupta ileri struct kavramlarını öğrendin: işaretçi erişimi (->), dinamik struct (malloc), struct fonksiyonları, iç içe struct ve struct dizisi.

Bunları birleştirerek dinamik bir kişi veritabanı yazdın. Bu desenler, C'de veri yönetiminin temelidir: işletim sistemleri kayıt bloklarını, oyunlar skor tablolarını, veri tabanları satırları bu biçimde tutar. Sonraki gruplarda union, enum ve bit alanları ile bellek optimizasyonunu öğreneceksin; böylece veri yapılarını daha da sıkıştırabileceksin.

Soru ve cevaplar

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

1 struct Person *p ile age alanına erişmek için?

  • p->age Doğru cevap
  • *p.age
  • p.age
  • &p.age

Açıklama: İşaretçi için -> operatörü kullanılır.

2 Kavramları sözdizimine eşle

Kavram Anlamı
p->age İşaretçi erişimi
people[0].age Dizi elemanı erişimi
e.when.day İç içe erişim
malloc(sizeof(...)) Dinamik ayırma

Orta seviye bölümündeki tüm dersler