Sayfalar

Pointer etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Pointer etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

4 Haziran 2015 Perşembe

Pointer (Gösterici)

       Göstericiler ne işimize yarayacak? Göstericilerin işlevlerinden yüzeysel olarak bahsedeyim. Göstericiler içerisinde bir hafıza adresi bulundururlar. Bellekte istediğimiz yere ulaşmamızı sağlarlar. Örnek olarak 11256 adresinde 8 değerimiz bulunsun ancak içindeki değeri bilmeyelim. Göstericiler sayesinde 11256 adresinde 8 değerinin olduğunu bulabileceğiz. Anlatması güç bir konu olduğu için örnekler üzerinden incelemek daha iyi olacak.

Tanımlanma şekilleri şu şekildedir;
Tür *değişken_ismi;
bu şekilde formüle edilebilir.
Örneğimiz üzerinden inceleyelim.


#include "stdafx.h"
#include "iostream"
#include "locale.h"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(0, "tr");
    int *a, b= 8;
    cout << "a'nın adresi : " << &a << endl;
    cout << "a'nın değeri : " << a << endl;
    cout << "b'nin adresi : " << &b << endl;
    cout << "b'nin değeri : " << b << endl;
    a = &b;  // a ya b nin adresini atadık.
    cout << "------------------------------------------" << endl;   
    cout <<"b'nin değeri : " << *a << endl; /*a'nın içine yerleştirilmiş adresi yazdırmayı
                                            istedik ve derleyicimiz a daki adresi buldu ve yazdırdı.*/
    cout <<"b'nin adresi : "<<a<<endl;//a'nın içindeki değeri okuduk.
    cout << "a'nın değeri : " << a << endl;//a'nın içinde b'nin adresi olduğunu gördük.
    cout << "a'nın adresi : " << &a << endl;//a'nın adresinin değişmediğini gördük.
    system("pause");
    return 0;
}



Gösterici Aritmetiği
char *k;   // adresi 10 olsun
k++; //k'nın adresi char tipinin boyutu 1 byte olduğu için 11 oldu.

int *a; //a'nın adresi 60 olsun.
a++;  //a'nın adresi int tipinin boyutu 4 byte olduğu için 64 oldu.

Fonksiyonlarda Göstericilerler Çağırma

void fonk(int *x){
*x=3;
}
int main(){
fonk(&x)
}


Not: Yukarıdaki bütün kodlar Visual Studio da yazılmıştır. Kodları direkt olarak kopyalayarak çalıştırabilirsiniz.

Not: Bu derste her şey anlatılmamıştır. İleride örnekler üzerinden daha rahat anlaşılacağından sadece göstericilerin ne işe yaradığını göstermek amacı ile yazılmıştır.