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
#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
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ı
____ show(void) {
int x = 42;
}
void show(void) {
int x = 42;
}
Açıklama: void show(void) ile değer döndürmeyen fonksiyon tanımlanır.