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 />

int get_hex_char(int val)<br />

{<br />

return "0123456789ABCDEF"[val];<br />

}<br />

int main()<br />

{<br />

int k;<br />

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

putchar(get_hex_char(k));<br />

}<br />

return 0;<br />

İşlevin geri dönüş değeri<br />

"0123456789ABCDEF"[val]<br />

ifadesinin değeridir. Bu da dizgenin yerleştirildiği adresten val uzaklıktaki nesnenin<br />

değeridir. char türden bu nesnenin değeri de dizgede yer alan karakterlerden herhangi<br />

birinin sıra numarasıdır. main işlevi içinde 0 – 15 aralığındaki değerlere karşılık gelen<br />

karakterler bir döngü içinde get_hex_char işlevi ile elde edilerek putchar işlevine<br />

argüman olarak gönderiliyor. Programın ekran çıktısı<br />

0123456789ABCDEF<br />

olur.<br />

Dizgelerin bellekte kaplayacakları yer derleme zamanında belirlenir. Aşağıdaki program<br />

her çalıştırıldığında, ekrana hep aynı adres değeri yazılır:<br />

#include <br />

int main()<br />

{<br />

int k;<br />

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

printf("%p\n", "Necati");<br />

}<br />

return 0;<br />

Dizgelerin İşlevlere Argüman Olarak Gönderilmesi<br />

Parametre değişkeni char türden bir gösterici olan işlevi, char türden bir adres ile<br />

çağırmak gerektiğini biliyorsunuz. Çünkü char türden bir gösterici değişkene, doğal olarak<br />

char türden bir adres atanmalıdır.<br />

Derleyiciler açısından dizgeler de char türden bir adres belirttiklerine göre, parametre<br />

değişkeni char türden gösterici olan bir işlevi, bir dizge ile çağırmak son derece doğal bir<br />

durumdur:<br />

puts("Necati Ergin");<br />

Burada derleyici "Necati Ergin" dizgesini belleğe yerleştirip sonuna sonlandırıcı karakteri<br />

koyduktan sonra artık bu dizgeyi, karakterlerini yerleştirdiği bellek bloğunun başlangıç<br />

adresi olarak görür. puts işlevinin parametre değişkenine de artık char türden bir adres<br />

kopyalanır. puts işlevi parametre değişkeninde tutulan adresten başlayarak sonlandırıcı<br />

karakteri görene kadar tüm karakterleri ekrana yazar. Bu durumda ekranda<br />

292

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

Saved successfully!

Ooh no, something went wrong!