Struct Başlatma
Coddy'nin C Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 42 / 63.
Yapı değişkenleri oluşturup üyelerine tek tek değer atayabilseniz de C, başlangıç değerlerini ayarlamak için daha kullanışlı bir yol sunar. Bir yapı değişkenini, bildirim sırasında süslü parantezler içine alınmış bir başlatıcı listesi kullanarak başlatabilirsiniz.
Yapı başlatma sözdizimi şöyledir:
struct StructureName variableName = {value1, value2, ...};Point yapımızı kullanan örnekte, onu tek ve düzenli bir satırda bildirebilir ve başlatabilirsiniz:
struct Point p1 = {10, 20};Bu, x değeri 10'a ve y değeri 20'ye ayarlanmış, p1 adlı bir Point değişkeni oluşturur. Başlatıcı listesindeki değerler, yapı tanımında bildirildikleri sırayla yapı üyelerine atanır.
Bu başlatma yaklaşımı, ayrı atamalardan yalnızca daha kısa olmakla kalmaz, aynı zamanda struct'ınızın rastgele çöp veriler yerine anlamlı değerlerle başlamasını da sağlar. Özellikle başlangıç değerlerini derleme zamanında bildiğinizde ve kullanıma hazır struct değişkenlerini verimli bir şekilde oluşturmak istediğinizde kullanışlıdır.
Görev
KolayBaşlatıcı listelerini kullanarak yapı başlatmayı gösteren bir C programı oluştur. Programın şunları yapması gerekir:
- Aşağıdaki üyelere sahip
structadlı birEmployeetanımla:- Çalışan kimliğini depolamak için bir tamsayı
id - Departman adını depolamak için boyutu 15 olan bir karakter dizisi
department - Hizmet yılı sayısını depolamak için bir tamsayı
yearsOfService - Çalışanın maaşını depolamak için bir kayan noktalı sayı
salary
- Çalışan kimliğini depolamak için bir tamsayı
- Aşağıdaki verileri kullanarak başlatıcı listeleriyle üç
Employeedeğişkeni oluştur:emp1: Kimlik 101, departman "Engineering", 5 hizmet yılı, maaş 75000.50emp2: Kimlik 102, departman "Marketing", 3 hizmet yılı, maaş 65000.25emp3: Kimlik 103, departman "Sales", 8 hizmet yılı, maaş 80000.75
- Her çalışanın bilgilerini tam olarak şu biçimde yazdır:
Employee 1:ID: [id]Department: [department]Years of Service: [yearsOfService]Salary: [salary]Employee 2:ID: [id]Department: [department]Years of Service: [yearsOfService]Salary: [salary]Employee 3:ID: [id]Department: [department]Years of Service: [yearsOfService]Salary: [salary]
- Üç çalışanın toplam maaşını şu biçimde hesapla ve yazdır:
Total Salary: [total] - Ortalama hizmet yılı sayısını şu biçimde hesapla ve yazdır:
Average Years of Service: [average]
Bu görev, yapı değişkenlerini tek satırda tanımlayıp başlattığın başlatıcı listelerini kullanarak yapı başlatma konusundaki anlayışını sınar. Başlatıcı listesindeki değerler, yapı tanımında üyelerin bildirildiği sırayla sağlanmalıdır.
Beklenen çıktın şu şekilde olmalıdır:
Employee 1:
ID: 101
Department: Engineering
Years of Service: 5
Salary: 75000.50
Employee 2:
ID: 102
Department: Marketing
Years of Service: 3
Salary: 65000.25
Employee 3:
ID: 103
Department: Sales
Years of Service: 8
Salary: 80000.75
Total Salary: 220001.50
Average Years of Service: 5.33Kendin dene
#include <stdio.h>
// YAPILACAK: Employee yapısını (struct) burada tanımlayın
int main() {
// YAPILACAK: Başlatıcı listelerini kullanarak üç adet Employee değişkeni oluşturun
// YAPILACAK: Her bir çalışanın bilgilerini yazdırın
// YAPILACAK: Toplam maaşı ve ortalama hizmet yılını hesaplayıp yazdırın
return 0;
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık & Akış 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ıKendi başına pratik yap: Online C derleyicisi