08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

En fazla kaç tane değişkenin yazmaçlarda saklanabileceği bilgisayar donanımlarına ve<br />

derleyicilere bağlıdır. Ayrıca, uzunluğu tamsayı (int) türünden büyük olan türler genellikle<br />

yazmaçlarda saklanamaz. Bu durumlarda da derleyicilerden hata veya uyarı iletisi<br />

beklenmemelidir.<br />

Sonuç olarak register belirleyicisi hızın önemli olduğu çok özel ve kısa kodlarda ancak<br />

birkaç değişken için kullanılmalıdır. Modern derleyicilerin çoğu seçime bağlı olarak kod<br />

üzerinde eniyileme (optimizasyon) yaparak bazı değişkenleri yazmaçlarda saklar. Bu<br />

durum da çoğu zaman register anahtar sözcüğünün kullanılmasını gereksiz kılar.<br />

static Belirleyicisi<br />

static belirleyicisi ancak yerel ya da global değişkenlerin bildiriminde kullanılabilir. Bu<br />

belirleyici, parametre değişkenlerinin bildiriminde kullanılamaz.<br />

static anahtar sözcüğünün global ve yerel değişkenlerin bildiriminde kullanılması farklı<br />

anlamlara gelir.<br />

static Anahtar Sözcüğünün Yerel Değişkenlerin Bildiriminde<br />

Kullanılması<br />

static yer belirleyicisi ile tanımlanmış yerel değişkenler ya da yerel diziler programın<br />

çalışması boyunca bellekte kalır. Başka bir deyişle, static anahtar sözcüğü yerel<br />

değişkenlerin ömrünü otomatik ömürden statik ömre yükseltir. Statik yerel değişkenler<br />

tıpkı global değişkenler gibi programın çalışmaya başlamasıyla yaratılır ve programın<br />

yürütülmesi bitene kadar da bellekte tutulur.<br />

Statik yerel değişkenler programcı tarafından ilkdeğer verildikten sonra kullanılır.<br />

İlkdeğer verme işlemi programın çalışması sırasında değil, derleme zamanında derleyici<br />

tarafından yapılır. Derleyici bellekten yer ayrılmasına yol açacak makine kodunu<br />

oluşturur. Statik yerel değişken için bellekte yer programın yüklenmesi sırasında ayrılır.<br />

Derleme zamanında gerçekte bellekte yer ayrılmaz. Bellekte yer ayırma işini yapacak<br />

makine kodu üretilir. Statik yerel değişkenler ilkdeğerleriyle birlikte belleğe yüklenir.<br />

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

#include<br />

void func1()<br />

{<br />

int x = 5;<br />

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

x++;<br />

}<br />

void func2()<br />

{<br />

static int y = 5;<br />

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

y++;<br />

}<br />

int main()<br />

{<br />

int k;<br />

}<br />

printf("func1 işlevi 5 kez çağrılıyor!\n");<br />

for (k = 0; k < 5; ++k)<br />

func1();<br />

printf("\nfunc2 işlevi 5 kez çağrılıyor!\n");<br />

for (k = 0; k < 5; ++k)<br />

func2();<br />

return 0;<br />

343

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

Saved successfully!

Ooh no, something went wrong!