Commodore sayı 27, sayfa 65

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 65

Pa—&, Pc—&c olmaktadır. Bunun tersi ise a — *Pa, *Pc'dir.

POINTER VE DİZİLER:

Pointer işlemini diziler üzerinde incelersek bize büyük kolaylıklar sağlayan kullanımlar görürüz. Çünkü dizilerin elemanlarını ifade etmek için pointer kullanmak hem işlemleri hızlandırır, hem de kullanılacak elemanın yeri tek bir pointer ile belirlenmiş olur.

Örnek olarak: Char a[10] dizisinin pointer'ını bulalım. Bunun için önce, char *Pa ile pointer değişkenini tanımlayalım, sonra da Pa = &a[0] ile Pa'yı belirleyelim. Pa belirlendikten sonra istediğimiz elemana kolayca erişebiliriz. Örneğin dizinin ilk, beşinci ve üçüncü elemanına sırayla ulaşalım:

0. eleman *Pa 5. eleman Pa = Pa + 5 ve *Pa 3. eleman Pa = Pa - 2 ve *Pa

Görüldüğü gibi dizi elemanlarını basit matematiksel işlemler yardımıyla elde edebilmek mümkün. Bu pointer işleminin sağladığı büyük olanaklardan biridir. Örnek olarak The C Programming Language adlı kitapta yer alan bir diziyi diğerine kopyalamaya yarayan strcpy() fonksiyonunun normal ve pointer kullanarak tasarlanmış şekillerini verebiliriz:

strcpy(s,t) char ınt İ; while ((sli) —tfil ! — *0”) i4 4

Bu örnekte dizi elemanları i değişkeni ile belirlenmekte ve her defada i arttırılarak dizinin son elemanına kadar işlem tekrarlanmaktadır. Programdan anlaşılacağı gibi dizinin son elemanının hemen arkasından “” gelmektedir. Bu derleme sırasında derleyici tarafından konmaktadır. Aynı işlem pointer kullanılarak şu şekilde yapılabilir.

strcpy(s,t) char *s, *t while (*s >» 4)

,

Burada (*) işleminin * pointer işleminden öncelikli olduğuna dikkat ediniz. Ayrıca while işleminin parantez içindeki ifadenin 0 olana kadar devam ettiğini ve dizilerin sonunda 0 olduğunu hatırlayınız. Pointer'lar hakkında daha geniş bilgi için The C Programming Language adlı kitabın 5. bölümüne bakabilirsiniz.

Klavyeyle gezinmek için ← ve → tuşları.