29.10.2014 Views

Amiga Dunyasi - Sayi 13 (Haziran 1991).pdf - Retro Dergi

Amiga Dunyasi - Sayi 13 (Haziran 1991).pdf - Retro Dergi

Amiga Dunyasi - Sayi 13 (Haziran 1991).pdf - Retro Dergi

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.

}<br />

Şimdiki örnekte ise, her tuşun gerçek<br />

port kodunu öğrenebilirsiniz.<br />

maın()<br />

{<br />

int *mouse=0xbfe001;<br />

int *key=0xbfec01;<br />

printf("Durmak için Sol Mouse tuşuna<br />

basınız.");<br />

while(*mouse!=188) {<br />

printf("kod=%d",*key);<br />

}<br />

}<br />

Daha önce de söylediğim gibi, bu örnekleri<br />

çoğaltmak mümkün. Ben sizlere<br />

en çok kullandığım türden örnekler vermeye<br />

çalıştım. Siz bu örnekler üzerinde<br />

oynayarak konuya hakim olmaya çalışabilirsiniz.<br />

İŞARETLER ve DİZİLER:<br />

C'de pointer'lar ve diziler arasında oldukça<br />

sıkı bir bağ vardır. Dizilerdeki herhangi<br />

bir indise pointerler sayesinde rahatça<br />

ulaşabilirsiniz.<br />

Aşağıdaki örnekte 'a', on elemanlı integer<br />

bir dizi olsun. Bu dizinin örneğin beşinci<br />

elemanına pointerler ile ulaşmaya<br />

çalışalım:<br />

int a[10];<br />

int *pa,x;<br />

pa=&a[0];<br />

x=*(pa+5);<br />

Bu örnekte pa, a değişkeninin ilk adresini<br />

gösterecek şekilde tanımlanmaktadır.<br />

Doğal olarak beş byte sonrası da, a değişkeninin<br />

beşinci elemanının değerini verecektir.<br />

pa=&a[0];<br />

yerine;<br />

pa=a;<br />

da diyebiliriz.Ya da aşağıdaki örnekte<br />

olduğu gibi kullanabiliriz; f() bir fonksiyon<br />

olsun,<br />

f(&a[2]); yerine f(a+2);<br />

gibi. Şimdi ise, iki dizinin birbirine eşitlenmesi<br />

örneğini inceleyelim.<br />

strcpy(s, t)<br />

char s[], t[];<br />

{<br />

int i;<br />

i=0;<br />

while((s[i]=t[i]) !='0')<br />

i++;<br />

}<br />

Yukarıdaki örneği pointerlar ile yapalım,<br />

strcpy(s, t)<br />

char *s, *t;<br />

{<br />

while((*s=*t) !='0') {<br />

s++;<br />

t++;<br />

}<br />

}<br />

Bu örneği daha kısa biçimde yazmak<br />

gerekirse,<br />

strcpy(s, t)<br />

char *s, *t;<br />

{<br />

while((*s++=*t++) !='0');<br />

}<br />

'0' ifadesini, dizinin sonuna gelip gelmediğimizi<br />

kontrol etmek için kullanıyoruz.<br />

Fakat bunu en kısa biçimde şöyle de<br />

yazabiliriz.<br />

strcpy(s, t)<br />

char *s, *t;<br />

{<br />

while(*s++=*t-H-);<br />

}<br />

Burada, her iki dizinin değerinin sıfır olması<br />

şartıyla programdan çıkılabilir.<br />

Dikkat ettiyseniz, pointerlar sayesinde<br />

istediğimiz bir değişkenin değerini rahatlıkla<br />

okuyup değiştirebiliyoruz. Bu da,<br />

programcılık açısından yukarıdaki örneklerden<br />

de anlaşılacağı gibi oldukça kolaylıklar<br />

sağlamakta. Fakat pointerlerin<br />

yararlan bu kadarla bitmiyor. Bu yalnızca<br />

bir başlangıç. Bundan sonraki örneklerde<br />

de sıkça kullanacağımız pointer değişkenleri<br />

tam olarak anlamaya çalışın.<br />

Bu aylık bu kadar. Gelecek aya oldukça<br />

önemli olan Structures (yapılar) konusunu<br />

inceleyeceğiz.<br />

Hepinize iyi çalışmalar...<br />

AMIGA DÜNYASI 28

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

Saved successfully!

Ooh no, something went wrong!