Struct Başlatma
Coddy'nin C Journey'sinin Logic & Flow bölümünün bir parçası — ders 42 / 63.
Yapı (struct) değişkenleri oluşturup ardından üyelerine tek tek değer atayabilseniz de, C başlangıç değerlerini atamak için daha kullanışlı bir yöntem sunar. Süslü parantezler içine alınmış bir başlatıcı listesi kullanarak, bir struct değişkenine tanımlandığı anda ilk değerlerini verebilirsiniz.
Struct ilklendirme sözdizimi şöyledir:
struct StructureName variableName = {value1, value2, ...};Oluşturduğumuz Point struct örneğini kullanarak, onu tek bir temiz satırda tanımlayabilir ve başlatabilirsiniz:
struct Point p1 = {10, 20};Bu, x değeri 10 ve y değeri 20 olarak ayarlanmış p1 adlı bir Point değişkeni oluşturur. Başlatıcı listesindeki değerler, struct tanımında bildirildikleri sırayla struct üyelerine atanır.
Bu ilklendirme yaklaşımı, yalnızca ayrı atamalardan daha kısa ve öz olmakla kalmaz, aynı zamanda struct'ınızın rastgele çöp veriler yerine anlamlı değerlerle başlamasını 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 oldukça kullanışlıdır.
Görev
KolayBaşlatıcı listelerini (initializer lists) kullanarak struct başlatmayı gösteren bir C programı oluşturun. Programınız şunları yapmalıdır:
- Aşağıdaki üyelere sahip
Employeeadında birstructtanımlayın:- Çalışan kimliğini saklamak için bir tam sayı
id - Departman adını saklamak için 15 boyutunda bir karakter dizisi
department - Hizmet yılını saklamak için bir tam sayı
yearsOfService - Çalışanın maaşını saklamak için bir ondalıklı sayı
salary
- Çalışan kimliğini saklamak için bir tam sayı
- Aşağıdaki verileri içeren başlatıcı listelerini kullanarak üç
Employeedeğişkeni oluşturun:emp1: ID 101, departman "Engineering", 5 yıl hizmet, maaş 75000.50emp2: ID 102, departman "Marketing", 3 yıl hizmet, maaş 65000.25emp3: ID 103, departman "Sales", 8 yıl hizmet, maaş 80000.75
- Her çalışanın bilgisini tam olarak şu formatta yazdırın:
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 formatta hesaplayın ve yazdırın:
Total Salary: [total] - Ortalama hizmet yılını şu formatta hesaplayın ve yazdırın:
Average Years of Service: [average]
Bu görev, struct değişkenlerini tek bir satırda tanımlayıp başlattığınız başlatıcı listelerini kullanarak struct başlatma konusundaki anlayışınızı test eder. Başlatıcı listesindeki değerler, struct tanımındaki üyelerin bildirildiği sırayla verilmelidir.
Beklenen çıktınız ş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.33Kopya kağıdı
Bir struct değişkenini, süslü parantezler içine alınmış bir başlatıcı listesi (initializer list) kullanarak bildirim sırasında başlatabilirsiniz:
struct StructureName variableName = {value1, value2, ...};Bir Point struct'ı ile örnek:
struct Point p1 = {10, 20};Başlatıcı listesindeki değerler, struct tanımında bildirildikleri sırayla struct üyelerine atanır. Bu yaklaşım, ayrı atamalardan daha kısa ve öz bir yöntemdir ve struct'ınızın rastgele çöp veriler yerine anlamlı değerlerle başlamasını sağlar.
Kendin 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.
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ı