Struct Tanımlama
Coddy'nin C Journey'sinin Logic & Flow bölümünün bir parçası — ders 39 / 63.
Artık bir struct yapısının ne olduğunu anladığınıza göre, kendi yapı türlerinizi nasıl oluşturacağınızı öğrenmenin zamanı geldi. C'de bir struct bildirmek, özel veri türünüz için taslağı tanımlayan belirli bir sözdizimini takip eder.
Bir struct bildirmek için temel sözdizimi şöyledir:
struct StructureName {
datatype member1;
datatype member2;
// ... daha fazla üye
};Her bir bölüm şu şekilde çalışır: struct anahtar kelimesiyle başlarsınız, ardından yapınız için bir isim gelir, sonra tüm üye değişkenleri süslü parantezler içinde listelersiniz. Her bir üye, veri tipi ve ismiyle tıpkı normal bir değişken gibi tanımlanır. Kapanış parantezinden sonra noktalı virgül koymayı unutmayın!
Örneğin, 2B uzayda bir noktayı temsil eden bir yapı oluşturmak için:
struct Point {
int x;
int y;
};Bu bildirim, x ve y adında iki tam sayı üyesi içeren struct Point adında yeni bir veri türü oluşturur. Bir kez bildirildikten sonra, bu yapı türü, koordinat bilgilerini düzenli bir şekilde tutan değişkenler oluşturmak için programınız boyunca kullanılabilir.
Görev
KolayBir kütüphane sistemindeki bir kitabı temsil etmek için bir struct tanımlayan bir C programı oluşturun. Programınız şunları yapmalıdır:
- Aşağıdaki üyeleri içeren
Bookadında birstructtanımlayın:- Kitabın kimlik numarasını saklamak için bir tam sayı
id - Kitabın başlığını saklamak için 50 boyutunda bir karakter dizisi
title - Sayfa sayısını saklamak için bir tam sayı
pages - Kitabın fiyatını saklamak için bir float
price
- Kitabın kimlik numarasını saklamak için bir tam sayı
- Struct'ı tanımladıktan sonra bir onay mesajı yazdırın:
Book struct defined successfully! sizeof()kullanarakBookstruct'ının boyutunu bayt cinsinden şu formatta yazdırın:Size of Book struct: [size] bytes- Her bir üyenin boyutunu ayrı ayrı yazdırın:
Size of id: [size] bytesSize of title: [size] bytesSize of pages: [size] bytesSize of price: [size] bytes
Bu meydan okuma, struct anahtar kelimesinin doğru kullanımı, uygun veri türlerine sahip üye bildirimleri ve kapanış parantezinden sonraki noktalı virgül dahil olmak üzere struct bildirim sözdizimi hakkındaki anlayışınızı test eder. Ayrıca C'nin sizeof() operatörünü kullanarak struct üyeleri için belleği nasıl tahsis ettiğini keşfedeceksiniz.
Tam boyut değerlerinin sisteminizin mimarisine bağlı olarak değişebileceğini, ancak programın başarıyla derlenmesi ve çalışması için struct tanım sözdiziminin doğru olması gerektiğini unutmayın.
Kopya kağıdı
C'de bir struct bildirmek için aşağıdaki sözdizimini kullanın:
struct StructureName {
datatype member1;
datatype member2;
// ... daha fazla üye
};struct anahtar kelimesiyle başlayın, ardından yapınız için bir isim verin ve ardından tüm üye değişkenleri süslü parantezler içinde listeleyin. Her üye, veri tipi ve adıyla bildirilir. Kapanış parantezinden sonra noktalı virgül koymayı unutmayın!
Bir Point yapısı örneği:
struct Point {
int x;
int y;
};Bu, programınız boyunca kullanılabilecek iki tam sayı üyesine sahip struct Point adında yeni bir veri tipi oluşturur.
Kendin dene
#include <stdio.h>
int main() {
// YAPILACAK: Kitap yapınızı (struct) burada tanımlayın
// Onay mesajını yazdır
printf("Book struct defined successfully!\n");
// YAPILACAK: Kitap yapısının ve üyelerinin boyutunu yazdır
return 0;
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Logic & Flow bölümündeki tüm dersler
1Pointer Temelleri
Pointer Nedir?Pointer TanımlamaAdres Operatörü (&)Dereference Operatörü (*)NULL Pointer'larÖzet: Pointer Temelleri4Proje: Basit Metin Aracı
Projeye Genel BakışKarakter Sayma7Yapılar (structs)
Struct Nedir?Struct TanımlamaStruct Değişkenleri OluşturmaStruct Üyelerine ErişmeStruct BaşlatmaÖzet: Öğrenci Verisi Struct'ı2İşaretçiler ve Diziler
İşaretçi Olarak Dizi İsimleriDizi Elemanları - İşaretçilerİşaretçi Aritmetiğiİşaretçilerin KarşılaştırılmasıÖzet: İşaretçi ile Dizi Gezinme5İşaretçiler ve Fonksiyonlar
Değer ile GeçmeFonksiyonlara İşaretçi Göndermeİşaretçiler ile Değişkenleri DeğiştirmeKlasik Bir Örnek: SwapFonksiyonlara Dizi GöndermeÖzet: Fonksiyon İşaretçi Argümanları8Yapılar ve İşaretçiler
Yapılara İşaretçilerOk Operatörü (->)Yapıları Değer ile AktarmaYapı İşaretçilerini AktarmaYapıların Dinamik TahsisiÖzet: Yapıyı Değiştirme - Ptr11Son Tekrar Görevleri
Tekrar: Dinamik String BirleştirmeTekrar: Struct DizisiTekrar: Kelime Frekans Sayacı3Karakter Dizileri ve Stringler
char Dizisi Olarak StringlerNull Sonlandırıcıscanf ile String Girişistrlen() Kullanımıstrcpy() Kullanımıstrcat() Kullanımıstrcmp() KullanımıÖzet: Temel String Fonksiyonları