Struct Üyelerine Erişme
Coddy'nin C Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 41 / 63.
Artık struct değişkenleri oluşturabildiğine göre, bunların içinde saklanan verilerle nasıl çalışacağını öğrenmen gerekiyor. Bir struct değişkeninin tek tek üyelerine erişmenin ve bunları değiştirmenin anahtarı nokta operatörüdür (.).
Yapı üyelerine erişim sözdizimi basittir:
structVariable.memberNamePoint struct örneğimizi kullanarak üyelerini hem okuyabilir hem de yazabilirsiniz:
struct Point p1;
// struct üyelerine değer yazma
p1.x = 10;
p1.y = 20;
// struct üyelerinden değer okuma
printf("Point coordinates: (%d, %d)\n", p1.x, p1.y);Nokta operatörü, diğer herhangi bir değişkene erişmekle tamamen aynı şekilde çalışır; onu atamalarda, aritmetik işlemlerde, işlev çağrılarında veya o türden normal bir değişkeni kullanacağın her yerde kullanabilirsin. Her üye, tanımlandığı türden bağımsız bir değişken gibi davranır ve struct verilerini düzenli ve sezgisel bir şekilde işlemeni sağlar.
Görev
KolayNokta operatörünü kullanarak struct üyelerine erişmeyi ve onları değiştirmeyi gösteren bir C programı oluştur. Programın şunları yapmalı:
- Aşağıdaki üyelere sahip,
Caradında birstructtanımla:- Üretim yılını saklamak için
yearadında bir tamsayı - Aracın markasını saklamak için 20 elemanlı
brandadında bir karakter dizisi - Mevcut kilometreyi saklamak için
mileageadında bir tamsayı - Aracın fiyatını saklamak için
priceadında bir kayan noktalı sayı
- Üretim yılını saklamak için
myCaradında birCardeğişkeni oluştur- Aşağıdaki girdi değerlerini oku ve nokta operatörünü kullanarak struct üyelerine ata:
- Yıl için bir tamsayı oku ve
myCar.yeardeğişkenine ata - Marka için bir metin oku ve
strcpy()ilemyCar.brandiçine kopyala (bir diziye=ile atama yapılamaz) - Kilometre için bir tamsayı oku ve
myCar.mileagedeğişkenine ata - Fiyat için bir kayan noktalı sayı oku ve
myCar.pricedeğişkenine ata
- Yıl için bir tamsayı oku ve
- Tüm değerleri okuduktan sonra aşağıdaki işlemleri gerçekleştir:
myCar.mileage += 1000;kullanarak kilometreyi 1000 artırmyCar.price -= 500.0;kullanarak fiyatı 500.0 azalt
- Her üyeye erişmek için nokta operatörünü kullanarak araç bilgilerini tam olarak şu biçimde yazdır:
Car Details:Year: [year]Brand: [brand]Mileage: [mileage]Price: [price]
Bu alıştırma, struct üyelerini hem okumak hem de yazmak için nokta operatörünü anladığını ölçer. Struct üyelerine değer atama, bu değerler üzerinde aritmetik işlemler gerçekleştirme ve çıktı için bu üyelere erişme pratiği yapacaksın.
Örneğin, girdi şu şekildeyse:
2020
Toyota
50000
25000.50Çıktın şu şekilde olmalı:
Car Details:
Year: 2020
Brand: Toyota
Mileage: 51000
Price: 24500.50Kendin dene
#include <stdio.h>
#include <string.h>
// TODO: Car struct'ını burada tanımlayın
int main() {
// TODO: myCar adlı bir Car değişkeni oluşturun
// Giriş değerlerini okuyun
int year;
char brand[20];
int mileage;
float price;
scanf("%d", &year);
scanf("%s", brand);
scanf("%d", &mileage);
scanf("%f", &price);
// TODO: Giriş değerlerini nokta operatörünü kullanarak struct üyelerine atayın
// TODO: mileage ve price değerlerini belirtildiği gibi değiştirin
// TODO: Araba bilgilerini nokta operatörünü kullanarak yazdırın
printf("Car Details:\n");
// Year, Brand, Mileage ve Price değerlerini burada 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