08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

C ve Sistem Programcıları Derneği - C Ders Notları - Necati Ergin<br />

Dizgeler ile statik yerel değişkenleri daha sonra göreceksiniz.<br />

Global değişkenler statik ömürlü varlıklardır. Yani global değişkenler programın çalışması<br />

süresince yaşayan, yani programın çalışması süresince bellekte yer kaplayan<br />

değişkenlerdir.<br />

ii. Otomatik Ömürlü Varlıklar<br />

Otomatik ömürlü nesneler programın çalışmasının belli bir zamanında yaratılan, belli süre<br />

etkinlik gösterdikten sonra yok olan, yani ömürlerini tamamlayan nesnelerdir. Bu tür<br />

nesnelerin ömürleri, programın toplam çalışma süresinden kısadır.<br />

Yerel değişkenler, otomatik ömürlüdür. Programın çalışma zamanında tanımlandıkları<br />

bloğun çalışması başladığında yaratılırlar, bloğun çalışması bitince yok olurlar, yani<br />

ömürleri sona erer.<br />

void func(int a, int b)<br />

{<br />

int result;<br />

/***/<br />

}<br />

Yukarıdaki func işlevinin ana bloğu içinde result isimli bir yerel değişken tanımlanıyor.<br />

Programın çalışması sırasında func işlevinin koduna girildiğinde result değişkeni yaratılır.<br />

Programın akışı func işlevinden çıktığında, result değişkeninin ömrü sona erer.<br />

Statik ömürlü değişkenlerle otomatik ömürlü değişkenler arasında ilkdeğer verme<br />

(initialization) açısından da fark vardır. Statik ömürlü olan global değişkenlere de yerel<br />

değişkenlerde olduğu gibi ilkdeğer verilebilir.<br />

İlkdeğer verilmemiş ya da bir atama yapılmamış bir yerel değişkenin içinde bir çöp değer<br />

bulunur. Bu değer o an bellekte o değişken için ayrılmış yerde bulunan 1 ve 0 bitlerinin<br />

oluşturduğu değerdir.<br />

İlkdeğer verilmemiş statik ömürlü değişkenlerin 0 değeri ile başlatılması güvence<br />

altındadır. İlk değer verilmemiş ya da bir atama yapılmamış global değişkenler içinde her<br />

zaman 0 değeri vardır. Yani bu değişkenler derleyici tarafından üretilen kod yardımıyla 0<br />

değeriyle başlatılır.<br />

Aşağıdaki programı derleyerek çalıştırın:<br />

#include <br />

int g;<br />

int main()<br />

{<br />

int y;<br />

printf("g = %d\n", g);<br />

printf("y = %d\n", y); /* Yanlış /<br />

}<br />

return 0;<br />

Bir yerel değişkenin ilkdeğer verilmeden ya da kendisine bir atama yapılmadan<br />

kullanılması bir programlama hatasıdır. Derleyicilerin hemen hemen hepsi böyle<br />

durumlarda mantıksal bir uyarı iletisi verir.<br />

[C++ dilinde böyle bir zorunluluk yoktur.]<br />

Global değişkenlere ancak değişmez ifadeleriyle ilkdeğer verilebilir. Global değişkenlere<br />

ilkdeğer verme işleminde kullanılan ifadede (initializer), değişkenler ya da işlev çağrı<br />

ifadeleri kullanılamaz. İfade yalnızca değişmezlerden oluşmak zorundadır.<br />

98/529

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!