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