Ö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
#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
#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 |