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

typedef İle Adres Türlerine İsim Verilmesi<br />

typedef bildirimi ile gösterici türlerine yeni isim verilmesinde dikkat edilmesi gereken bir<br />

nokta vardır. Tür niteleyicileri konusunda ele alındığı gibi C dilinde aşağıdaki gibi bir<br />

tanımlama yapıldığında<br />

const int *ptr;<br />

ptr gösterdiği yer const olan bir göstericidir. Yani ptr değişkeninin gösterdiği yerdeki<br />

nesne değiştirilemez:<br />

*ptr = 10;<br />

gibi bir atama geçersizdir. Ancak tanımlama<br />

int *const ptr;<br />

biçiminde yapılırsa, ptr kendisi const olan bir göstericidir. ptr göstericisinin gösterdiği<br />

nesnenin değeri değiştirilebilir, ama ptr göstericisinin içindeki adres değiştirilemez, yani<br />

ptr = (int *) 0x1F00;<br />

gibi bir atama yapılması geçersizdir.<br />

typedef int *IPTR;<br />

gibi bir bildirimden sonra<br />

const IPTR p;<br />

biçiminde bir tanımlama yapıldığında, p göstericisinin değeri değiştirilemez, p<br />

göstericisinin gösterdiği yerdeki nesnenin değeri değiştirilebilir. Yani *p nesnesine atama<br />

yapılabilir. Başka bir deyişle<br />

const IPTR ptr;<br />

deyimi ile<br />

int *const ptr;<br />

deyimi eşdeğerdir.<br />

Windows işletim sistemi altında çalışacak C ya da C++ programlarının yazılmasında<br />

typedef bildirimleri sıklıkla kullanılır. windows.h isimli başlık dosyasında temel veri<br />

türlerinin çoğuna typedef bildirimleriyle yeni isimler verilmiştir. Windows API<br />

programlamada windows.h başlık dosyası kaynak koda eklenmelidir. Bu dosyanın içinde<br />

API işlevlerinin bildirimleri, çeşitli yapı bildirimleri, typedef isimleri, önemli simgesel<br />

değişmezler bulunur.<br />

windows.h İçinde Tanımlanan typedef İsimleri<br />

typedef int BOOL;<br />

Bu türle ilişkili iki simgesel değişmez de tanımlanmıştır.<br />

#defineFALSE 0<br />

#defineTRUE 1<br />

395

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

Saved successfully!

Ooh no, something went wrong!