typedef ve enum
- C kursu
- Orta seviye
- Ders 110/116
- 5 dk
typedef ile enum türü öğrenirsin.
typedef ve enum
enum, adlandırılmış tamsayı sabitleri tanımlar. typedef ile birlikte kullanıldığında, enum anahtar sözcüğünü tekrarlamadan kısa adla kullanılır.
Örnek: typedef enum { RED, GREEN, BLUE } Color;. Bu, üç renk sabitini (RED=0, GREEN=1, BLUE=2) ve Color tür adını tanımlar. Bundan sonra Color c = GREEN; yazabilirsin; enum Color c = GREEN; yazmak zorunda değilsin. Bu, kodu hem kısaltır hem de tür güvenliğini artırır. switch içinde her sabiti bir case ile eşleştirirsin; böylece renk adları okunabilir olur.
Renk adı fonksiyonu
Bir Color değerini insan-okur dizeye çevirmek için switch kullanan bir fonksiyon yazarsın. Her case, bir sabite karşılık gelir ve Türkçe adı döndürür.
Örnek: const char *color_name(Color c) { switch (c) { case RED: return "kırmızı"; case GREEN: return "yeşil"; case BLUE: return "mavi"; default: return "bilinmeyen"; } }. Bu fonksiyon, sayısal değeri anlamlı bir dizeye çevirir. printf("%s\n", color_name(GREEN)); çağrısı "yeşil" yazdırır. switch yapısı, yeni renk eklendiğinde kolayca genişletilebilir; yalnızca yeni bir case eklersin. Bu, enum'ları dizeyle eşlemenin standart desenidir.
Uygulama typedef enum programı yaz
typedef enum { RED, GREEN, BLUE } Color; tanımla. const char *color_name(Color c) fonksiyonunu yaz; switch ile RED→"kırmızı", GREEN→"yeşil", BLUE→"mavi", default→"bilinmeyen". main içinde printf("%s\n", color_name(GREEN)); yazdır.
Başlangıç kodu
#include <stdio.h>
// Color enum'ını typedef ile tanımla
// color_name fonksiyonunu switch ile yaz
// main'de color_name(GREEN) çağır ve yazdır
int main(void) {
return 0;
}Örnek çözüm
#include <stdio.h>
typedef enum { RED, GREEN, BLUE } Color;
const char *color_name(Color c) {
switch (c) {
case RED: return "kırmızı";
case GREEN: return "yeşil";
case BLUE: return "mavi";
default: return "bilinmeyen";
}
}
int main(void) {
printf("%s\n", color_name(GREEN));
return 0;
}Beklenen çıktı
yeşil
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Renk sabitlerini eşle
| Kavram | Anlamı |
|---|---|
RED |
Sıfır |
GREEN |
Bir |
BLUE |
İki |
Color |
Tür adı |
2 color_name çağrısını tamamla
printf("%s
", color_name(____));
printf("%s
", color_name(GREEN));
Açıklama: color_name(GREEN) "yeşil" döndürür.
3 color_name fonksiyonu ne döndürür?
- Renk bileşenlerini
- Renk kodunu (tamsayı)
- Renk adını (dize) Doğru cevap
- Bellek adresini
Açıklama: color_name bir Color değerini dizeye çevirir.