4. İşaretçiler ve Diziler
C++ da İşaretçiler ve diziler arasında çok
yakın bir ilişki vardır. Bir dizinin ismi, dizideki ilk elemanın
adresini içeren sabit bir değişkendi. Bundan diziler bölümünde
bahsetmiştik. Şimdi işaretçiler ile dizileri ilişkilendirirsek,
dizilerin adlarının birer işaretçiden oluştuğunu görmüş olacağız.
*(a+i)
a[i]
Bu sayede bu iki ifadenin aynı olduğunu
söylemiş oluruz. Bir de çok boyutlu dizilere uyarlarsak,
*(*(a+i)+j)
a[i][j]
şeklini alır.
İnt a[100];
İnt *is1=&a[100];
Örneğimiz;
//işaretçi ve diziler
#include <iostream.h>
void KareAl(int *sayi) {
*sayi *= *sayi;
}
void KareAlDizi(int *is1) {
for (int i=0; i<10; i++)
is1[i] *= is1[i];
}
int main() {
int x = 50;
int intis1[10];
KareAl(&x);
cout<<"x = "<<x<<endl;
KareAlDizi(intis1);
cout<<intis1;
return 0;
}
Örneğimizi adım adım takip edersek:
void KareAl(int *sayi)
burda sayi adında bir işaretçiyi kullanarak bir fonsiyon
tanımlanıyor. Fonksiyonumuzun adı kare alma. İkinci fonksiyonda
ise is1 isimli bir işaretçi ile parametresini giriyoruz, fakat
işlem diziler üstünde sürüyor. Demiştik ya, dizilerin adları da
birer işaretçiden oluşur. Sonraki main() fonksiyonumuzda da, x
sabit değişkenimizi ve int tipindeki
intis1[ ]
dizimizi tanımlıyoruz. Referans yolu ile fonksiyonumuzu sabit
değeri gönderiyoruz. Bir diğer işlemle de işaretçi parametresine
sahip fonksiyonumuza bir dizi gönderiyoruz. Sanırım gayet basit
oldu:). Bu sayede fonksiyonları da konuya ilişkilendirmiş olduk.
|