CodeBlanks Logo Icon CodeBlanks

Otomatik depolama

  • C kursu
  • Başlangıç
  • Ders 101/116
  • 5 dk

Otomatik depolama süresi (local variables) öğrenirsin.

Otomatik depolama

Bir fonksiyon içinde tanımlanan değişkenler otomatik depolama özelliğine sahiptir. Bunlar stack'te yaşar ve fonksiyon döndüğünde kaybolur.

void show(void) {
    int x = 42;  /* otomatik */
    printf("%d\n", x);
}

Burada x her çağrıda yeniden yaratılır; çağrı bitince belleği geri verilir. Bu, ek bir free gerektirmez; C senin yerine temizler. Otomatik depolama, çoğu yerel değişken için tercih edilen en basit yöntemdir.

Otomatik depolama sınırları

Otomatik depolamanın bir sınırı vardır: fonksiyon döndüğünde değişken yok olur. Bu yüzden yerel bir dizinin adresini döndüremezsin.

int *bad(void) {
    int x = 5;
    return &x;  /* tehlikeli */
}

Burada x fonksiyon çıkınca silinir; dönen adres artık geçersizdir. Bu tür bellek büyük veya uzun ömürlü gerekiyorsa malloc kullanmalısın. Küçük ve geçici veriler için otomatik depolama her zaman en iyi seçimdir.

Uygulama show fonksiyonu ile yazdır

void show(void) fonksiyonunu tanımla: içinde int x = 42 ve printf ile x'i yazdır. main içinde show'u çağır.

Başlangıç kodu

main.c
#include <stdio.h>

// show fonksiyonunu tanımla; içinde bir tamsayı değer ata; printf ile yazdır
int main(void) {
    // show fonksiyonunu çağır
    return 0;
}

Örnek çözüm

main.c
void show(void) {
    int x = 42;
    printf("%d\n", x);
}
show();

Beklenen çıktı

42

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Depolama türü ve özellik eşleştir

Kavram Anlamı
otomatik Fonksiyon bitince kaybolur
stack Yerel değişkenler
free gerekmez Otomatik temizlik
her çağrı Yeniden yaratılır

2 Otomatik depolama ile ilgili hangisi doğrudur?

  • malloc ile ayrılan bellektir
  • Yerel değişkenlerin depolama biçimidir Doğru cevap
  • Program boyunca yaşar
  • free ile serbest bırakılır

Açıklama: Otomatik depolama yerel değişkenler içindir.

3 Boşluğu doldur: fonksiyon tanımı

Soru
____ show(void) {
    int x = 42;
}
Cevap
void show(void) {
    int x = 42;
}

Açıklama: void show(void) ile değer döndürmeyen fonksiyon tanımlanır.

Başlangıç bölümündeki tüm dersler