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

const Anahtar Sözcüğünün Gösterici Tanımlamalarında<br />

Kullanılması:<br />

const anahtar sözcüğü sıklıkla gösterici nesnelerinin tanımlamalarında kullanılır.<br />

const anahtar sözcüğünün göstericilerle birlikte üç ayrı kullanılma biçimi vardır.<br />

Kullanılan her biçimde tanımlanan göstericinin özelliği değişir.<br />

1. const anahtar sözcüğünün '*' atomundan önce kullanılması:<br />

Böyle göstericilere gösterdiği yer const olan göstericiler (pointer to const objects) denir.<br />

Böyle bir göstericinin gösterdiği nesne, göstericinin içeriği alınarak elde edilen nesneye<br />

atama yapılması yoluyla değiştirilemez. Ancak göstericinin kendisine atama yapılabilir.<br />

Yani göstericinin bir başka nesneyi göstermesi sağlanabilir. Aşağıdaki örneği inceleyin:<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 *iptr = a;<br />

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

const char *cptr = str;<br />

/*<br />

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

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

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

*/<br />

iptr = &x;<br />

dptr = &d2;<br />

cptr = "Selami";<br />

}<br />

return 0;<br />

Yukarıdaki main işlevinde tanımlanmış, gösterdiği yer const olan göstericiler için yapılan<br />

*iptr = 100;<br />

*dptr = 1.23;<br />

cptr[1] = 'x';<br />

atamaları derleme zamanında hata oluşumuna neden olur. Ancak göstericilerin<br />

kendilerine yapılan<br />

iptr = &x;<br />

dptr = &d2;<br />

cptr = "Selami";<br />

atamalarının tamamen kurallara uygun olduğunu görüyorsunuz.<br />

const anahtar sözcüğünün göstericilerle birlikte kullanılmasında en sık görülen biçim<br />

budur ve özellikle işlevlerin parametre değişkenleri olan göstericilerle bu biçim kullanılır:<br />

void func(const char *str)<br />

{<br />

/***/<br />

}<br />

Yukarıda func isimli işlevinin parametre değişkeni olan str göstericisi değerini işlevin<br />

çağrısıyla alır. İşlev çağrı ifadesindeki argüman işlevin çağrılmasıyla s göstericisine<br />

353

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

Saved successfully!

Ooh no, something went wrong!