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

int main()<br />

{<br />

int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};<br />

double d1 = 2.5, d2 = 3.5;<br />

char str[] = "Necati";<br />

int x = 20;<br />

const int *const iptr = a;<br />

const double *const dptr = &d1;<br />

const char *const cptr = str;<br />

/*<br />

*iptr = 100; Geçersiz!<br />

*dptr = 1.23; Geçersiz!<br />

cptr[1] = 'x'; Geçersiz!<br />

iptr = &x;<br />

dptr = &d2;<br />

cptr = "Selami";<br />

Geçersiz!<br />

Geçersiz!<br />

Geçersiz!<br />

}<br />

return 0;<br />

Göstericiyi gösteren bir göstericinin const anahtar sözcüğü ile bildirilmesinde const<br />

anahtar sözcüğünün kullanılması farklı olanaklar yaratır:<br />

const char **ptr;<br />

ptr nin gösterdiği göstericinin gösterdiği nesneye atama yapılamaz. const olan **ptr<br />

nesnesidir. ptr nesnesine ve *ptr nesnelerine atama yapılabilir. (pointer to pointer to<br />

const object)<br />

char *const *ptr;<br />

*ptr nin gösterdiği göstericiye atama yapılamaz. const olan *ptr nesnesidir. ptr nesnesine<br />

ve **ptr nesnelerine atama yapılabilir.<br />

char ** const ptr;<br />

ptr ye atama yapılamaz. const olan ptr nesnesidir. **ptr nesnesine ve *ptr nesnelerine<br />

atama yapılabilir.<br />

const char *const *ptr;<br />

yalnızca ptr nesnesine atama yapılabilir.<br />

char *const * const ptr;<br />

yalnızca **ptr nesnesine atama yapılabilir.<br />

const char ** const ptr;<br />

yalnızca *ptr nesnesine atama yapılabilir.<br />

Bir işlevin Geri Dönüş Değerinin const Adres Olması<br />

Adrese geri dönen bir işlevin geri dönüş değeri const bir adres olabilir:<br />

const char *get_name(void);<br />

Yukarıda bildirimi yapılan get_name işlevinin geri dönüş değeri const bir adrestir. Peki bu<br />

ne anlama gelir? Bir işlevin geri dönüş değeri türünün aslında, geri dönüş değerini içinde<br />

tutacak geçici nesnenin türü olduğunu biliyorsunuz. get_name işlevinin geri dönüş<br />

değerini tutacak geçici nesnenin türü const char * türüdür. Yani geçici nesne gösterdiği<br />

yer const olan bir göstericidir. İşlev çağrısı, işlevin geri dönüş değerini, yani geçici<br />

nesnenin değerini gösterdiğine göre, böyle bir işleve yapılan çağrı içerik işlecine ya da<br />

355

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

Saved successfully!

Ooh no, something went wrong!