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

1A00<br />

1A01<br />

----<br />

0001 0010<br />

0011 0100<br />

----<br />

yüksek anlamlı byte<br />

yüksek anlamlı byte<br />

Şekilden de görüldüğü gibi x değişkeninin düşük anlamlı byte değeri (34H) yüksek sayısal<br />

adreste (1A00H) olacak biçimde yerleştirilmiştir.<br />

Aşağıdaki kod kullanılan sistemin little endian ya da big endian oldugunu sınıyor:<br />

#include <br />

int main()<br />

{<br />

int x = 1;<br />

if (*(char *)&x)<br />

printf("little endian\n");<br />

else<br />

printf("big endian\n");<br />

}<br />

return 0;<br />

Yazılan kodda önce adres işleciyle x değişkeninin adresi elde ediliyor. Adres işlecinin<br />

ürettiği değer int * türündendir. Daha sonra tür dönüştürme işleciyle, elde edilen adres<br />

bilgisi char * türüne dönüştürülüyor. char * türünden adresin de içerik işlecinin terimi<br />

olduğunu görüyorsunuz. Bu durumda içerik işleci x nesnesinin en düşük sayısal<br />

adresindeki char türden nesneye erişir, değil mi? Eğer bu nesnenin değeri 1 ise sistem<br />

"little-endian" dır.<br />

Yazıların İşlevlere Gönderilmesi<br />

Yazılar karakter dizilerinin içinde bulunurlar. Bir işlevin bir yazı üzerinde işlem<br />

yapabilmesi için bir yazının başlangıç adresini alması yeterlidir. Yani işlev yazının<br />

(karakter dizisinin) başlangıç adresi ile çağrılır. Yazıyı içinde tutan char türden dizinin<br />

boyutu bilgisini işleve geçirmeye gerek yoktur. Çünkü yazıların sonunda sonlandırıcı<br />

karakter vardır. Karakter dizileri üzerinde işlem yapan kodlar dizinin sonunu sonlandırıcı<br />

karakter yardımıyla belirler.<br />

Yazılarla ilgili işlem yapan bir işlev char türden bir gösterici değişken ile üzerinde işlem<br />

yapacağı yazının başlangıç adresini alır. İşlev, yazının sonundaki sonlandırıcı karakteri<br />

görene kadar bir döngü ile yazının tüm karakterlerine erişebilir.<br />

str, char türünden bir gösterici olmak üzere yazı üzerinde sonlandırıcı karakteri görene<br />

kadar işlem yapabilecek döngüler şöyle oluşturulabilir:<br />

while (*str != '\0') {<br />

/***/<br />

++str;<br />

}<br />

for (i = 0; str[i] != '\0'; ++i) {<br />

/***/<br />

}<br />

puts ve gets İşlevleri<br />

stdio.h içinde bildirilen standart puts işlevinin parametre değişkeni char türünden bir<br />

göstericidir:<br />

263

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

Saved successfully!

Ooh no, something went wrong!