C#nedir?com
 
YAZAR HAKKINDA
Ahmet Faruk Nacaroğlu
Ahmet Faruk Nacaroğlu
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
40 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler:  C++ / C++.NET Ahmet Faruk Nacaroğlu
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : C++ / C++.NET
Yayınlanma Tarihi : 19.10.2002
Okunma Sayısı : 20789
Yorum Sayısı : 0     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
XML - Deniz Kılınç
emre TAŞ
yazının devamı >
emre TAŞ
Decompiling and Reverse Engineering .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Masaüstü mü ? İnternet Mi? .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
.Net Kavramları - .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Yeni Başlayanlar için - .Net Radyo
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 21.4.2021
Turhal Temizer
Mac OS/X Removing CUDA 21.4.2021
Burak Selim Şenyurt
Tie Fighter Değil, Project Tye! 21.4.2021
Burak Selim Şenyurt
Stackoverflow Sevgi Anketinde Yıllardır Bir Numara Çıkan Programlama Dili Rust Kimdir? 21.4.2021
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
C++'da Göstericilere Giriş
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Bu makalemizde C++ dilindeki göstericiler (pointer) konusunu ele alacağız. Göstericiler C ve C++ dillerinin en zor konusu olarak ün salmışlardır. Ama konu üzerinde biraz çalışırsak ve göstericileri kullanırken dikkatli olursak gerçekten de programlarımızın hızını oldukça artıran araçlar olarak karşımıza çıkarlar.

Normalde bir değişken tanımladığımızda aslında sadece o değişkene hafızada yer ayırmış oluruz. Bu değişken ismiyle değişkenimizin hafızadaki yerine ulaşabiliriz. Değişken ismiyle değişkene ulaşmaya direkt referans (directly referance) denir. Göstericiler ise bir değişkenin hafızadaki yerini saklarlar. Bu şekilde göstericinin işaret ettiği değişkene de ulaşabiliriz. Buna dolaylı referans (indirectly reference) denir. Aşağıdaki şekilde direkt ve dolaylı referanslar gösterilmiştir.

Göstericileri tanımlamak ile diğer değişkenleri tanımlamak arasında küçük bir fark vardır. Göstericileri tanımlarken değişken isminden önce * işareti konur:

       int *sayiPtr, sayi;

Yukarıda tamsayı tipinde bir gösterici bir de normal değişken tanımladık. Aynı satırda birden  fazla gösterici tanımlarken herbirinin önüne ayrı ayrı * işareti koymamız gerekir. Aksi halde sadece ilk değişkenimiz gösterici olur. Birden fazla göstericiyi aynı satırda şöyle tanımlarız:

       char *aPtr, *bPtri;

C++'da göstericiler için iki tane işleç(operator) kullanılır. Bunlardan birincisi: & adres işlecidir. Adres işleciyle gösterici ile aynı tipteki bir değişkenin adresine ulaşabiliriz.

       int sayi=9;
       int *sPtr;

       sPtr=&sayi;


Yukarıdaki kodun ilk satırında bir tamsayı değişkeni tanımladık ve ona 9 değerini atadık. İkincisinde tamsayı tipinde bir adres tutmak için sPtr göstericimizi tanımladık. Son satırda ise sayi değikenimizin adresini sPtr değişkenimize yükledik. Artık sPtr, sayi değişkenini gösteriyor deriz. Son satırı çizim olarak şöyle gösterebiliriz.

sayi değişkenimizin bilgisayarın hafızasında 1800 adresli yerde saklandığını düşünelim. sPtr göstericisinin ise hafızadaki yeri 2300 olsun. Yukarıdaki kodun son satırı çalıştıktan sonra sPtr'nin içerisindeki değer 1800 olur. Değişkenlerimizin son durumları şöyle olacaktır:

Diğer gösterici işlecimiz *'dir ve dolaylı referans işleci olarak bilinir. Bu işleç, kendisinden sonra gelen göstericinin gösterdiği değişkenin değerini döndürür. Aşağıdaki kod parçasını incelersek:        cout << *sPtr << endl;

bu kod ekrana sayi değişkenimizin değeri olan 9'u yazdırır. Çünkü, sPtr göstericisi sayi değişkenini işaret ediyor ve *sPtr ifadesi ile sPtr göstericisinin işaret ettiği değişkene ulaşıyoruz. Dolaylı referans işlecimiz ile ayrıca, göstericinin gösterdiği değişkenin değerini de değiştirebiliriz :        *sPtr=23;
       cout<< *sPtr << endl;
       cout<< sayi << endl;


Yukarıdaki kod parçasında önce sPtr göstericisinin gösterdiği değişkenin (yani "sayi" değişkenini) değerini 23 yaptık. Sonraki satırda sPtr göstericisinin gösterdiği değişkenin değerini ekrana yazdırdık. Son olarak sayi değişkenin değerini ekrana yazdırdık. Son iki satırda bulunan kodlar ekrana aynı değerleri yani 23 değeri basacaktır. İlerleyen yazılarımızda, C++'da göstericilerin dizilerle nasıl kullanılacağını ve fonksiyonlara göstericileri nasıl parametre olarak geçireceğimiz gibi göstericilerle ilgili ileri düzeyde işlemler hakkında bilgi vermeye çalışacağım.

Makale:
C++'da Göstericilere Giriş C++ ve C++.NET dili Ahmet Faruk Nacaroğlu
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor