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

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

#include <br />

int main()<br />

{<br />

char *cp, ch;<br />

int *ip, i;<br />

double *dp, d;<br />

printf("sizeof(ch) = %u\n", sizeof(ch));<br />

printf("sizeof(i) = %u\n", sizeof(i));<br />

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

printf("sizeof(cp) = %u\n", sizeof(cp));<br />

printf("sizeof(ip) = %u\n", sizeof(ip));<br />

printf("sizeof(dp) = %u\n", sizeof(dp));<br />

printf("sizeof(char *) = %u\n", sizeof(char *));<br />

printf("sizeof(int *) = %u\n", sizeof(int *));<br />

printf("sizeof(double *) = %u\n", sizeof(double *));<br />

}<br />

return 0;<br />

Yukarıdaki programda hem char, int, double türlerinden hem de char *, int *, double *<br />

türlerinden nesnelerin tanımlandığını görüyorsunuz. Daha sonra printf işleviyle bu<br />

nesnelerin sizeof değerleri ekrana yazdırılıyor. T türünden bir nesnenin sizeof değeri ne<br />

olursa olsun T* türünden bir nesnenin sizeof değeri hep aynıdır, değil mi? Yukarıdaki<br />

program UNIX işletim sistemi için derlenip çalıştırıldığında ekran çıktısı aşağıdaki gibi<br />

olur:<br />

sizeof(ch) = 1<br />

sizeof(i) = 4<br />

sizeof(d) = 8<br />

sizeof(cp) = 4<br />

sizeof(ip) = 4<br />

sizeof(dp) = 4<br />

sizeof(char *) = 4<br />

sizeof(int *) = 4<br />

sizeof(double *) = 4<br />

Adres Bilgisi Olan İfadeler<br />

Bazı ifadeleri adres türündendir. Yani bu ifadelerin değeri adrestir. Bir gösterici<br />

değişkene, türü adres olan ifade yani bir adres değeri atanmalıdır.<br />

int *ptr;<br />

gibi tanımlanan bir değişken, içinde int türden bir değişkenin adresi olan bilgiyi<br />

saklayacak değişkendir. Böyle bir adres bilgisi ptr değişkenine nasıl atanabilir?<br />

Adres Değişmezleri<br />

1200,int türden bir tamsayı değişmezidir. Böyle bir değişmez, örneğin int türden bir<br />

nesneye atanabilir:<br />

int x = 1200;<br />

Tür dönüştürme işlemiyle bir tamsayı değişmezi bir adres bilgisine dönüştürülebilir:<br />

(int *)1200<br />

232

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

Saved successfully!

Ooh no, something went wrong!