Dokuman Anasayfa
 


 

İşaretçilere Giriş

1. İşaretçilere Giriş

İşaretçiler (Pointers) ve bundan önce görmüş olduğumuz diziler (Arrays) ilerde yapacağımız uygulamalarda kullanımına kesin ihtiyaç duyacağımız başlıklardır. Bunlar bize dinamik bellek kullanımını sağlarlar. Dinamik bellek kullanımından bahsedecek olursak, belleğimizin kutucuklardan oluştuğunu hayal edin. 100 kutucuklu bir belleğimiz var. Bu kutucukların her birinin bir adresi vardır ve biz de bu adresler yolu ile kutucuklara erişiriz. İşte işaretçiler bu erişimi sağlıyor. Bu konuya çalışırken, anlamanın gayet kolay olduğunu göreceksiniz. Fakat ben sizi uyarayım, en kolay konular en çok hata yapılanlardır. İşaretçilerde yapılan hatalar programın hatta sistemin çökmesine sebep olabilir, aynı zamanda yapılan hataları kolay kolay bulamayabilirsiniz. Büyük projelerde bu sizi bayağı sıkıntıya sokacaktır. Onun için işaretçiler konusunda, kullanım tekniği hakkında size sık sık tavsiyelerde bulunacağım.

İşaretçilerin Tanımlanması ve Değer Atanması

Bir işaretçi tipi, hangi tipe işaret ettiğini belirten ve birer adres değeri içeren verilere sahiptir. Bir işaretçi değişken bildirimi, açık olarak hangi tip veriyi kullanacağını bildirerek başlar. Derleyicimizde * işareti ile işaretçi değişkeni tanımladığımızı anlar.

<tip> *<işaretçi adı>; Şeklinde yazılır. Örneğin, int *İsaretciAdi;

Şimdi de aynı satırda birden fazla işaretçi tanımlayalım.

 İnt *is1, *is2, *is3; 

Şeklinde tanımlayabiliriz. Benim size tavsiye ettiğim budur. Fakat farklı bir yol olarak da (İnt *) is1, is2, is3; şeklinde de yazılabiliriz. Burda dikkat etmemiz gereken olay ise, int tipinde işaretçileri tanımlarken herhangi bir değişkende tanımlarsak (int *) şeklinde tek satırda yapmamız hatalıdır.

(İnt *) is1, is2, is3, x=4;  //hata
int *is1, *is2, *is3, x=4;  //doğru

Sanırım ne demek istediğimi anladınız:).

Daha önce görmüş olduğumuz "&" adres operatörünü hatırlayalım, kendisisinden sonra gelen ifadenin adresini gösterir.

İnt x;
İnt *is1=&x;

x i tanımladık, sonra is1 işaretimize x in adresini atadık. Kısaca is1 in gösterdiği adresteki değer diye biliriz:)

#include <iostream.h>
#include <string.h>

int main(void)
{
	char *is1="deneme";
		int index;
	for(index=(strlen(is1)-1); index>=0; index--)
		cout<<is1[index]<<endl;
                
	cout<<"\n"<<is1;

    return 0;
}

Programın çıktısı
---------
e
m
e
n
e
d

deneme

---------

Burada bir işaretçi değişkenine değer atamayı kullandık, aynı zamanda dizilerde gördüğümüz strlen() fonksiyonun örneğini de yapmış olduk.

 

» Hakkımızda
  İcerikde ekli bulunan dokumanların her hangı bır websitesi veya baska bır kaynakla alakası yoktur.Tamamen bizim emegimiz olan bu dokumalar uzun cabalar sonucunda bukadarı bır araya getirilmistir.Onun için emege saygılı olalım.
Genel Sorumlu ::  [ Site Yöneticisi ]  [ By SaNaLLord
 . Anasayfa . Bize ulasin . 
SaNaLLoRd Bilgi İşlem merkezi Genel tasarim ve kodlamada son nokta