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.