Merhaba,
1) Göstericileri neredeyse her alanda kullanabilmekteyiz. Asagida ufak örnek bir dizi icin kullanimini göstermektedir.
int testArray[10] = { 0,1,2,3,4,5,6,7,8,9 };
int* testArrP;
printf("%d", *(testArrP = testArray)); //dizinin ilk elemani gösteriliyor.
printf("%d", *(testArrP = &testArray[3])); //dizinin 3. elemani gösteriliyor.
2) Göstericiyi gösteren göstericilerde vardir bildiginiz gibi. Asagidaki gösterim int veri tipini gösteren bir göstericiyi isaret etmektedir.
int testArray[10] = { 0,1,2,3,4,5,6,7,8,9 };
int* testArrP;
testArrP = &testArray[5];
int** pp= &testArrP; //Göstericiyi gösteren int tipinde bir göstericidir.
printf("%d\n", **pp);
3) Göstericiyi gösteren göstericinin gösterdigi göstericilerde mevcuttur.
int testArray[10] = { 0,1,2,3,4,5,6,7,8,9 };
int* testArrP;
testArrP = &testArray[7];
int** pp= &testArrP;
int*** p3 = &pp;
printf("%d\n", ***p3);
Göstericilerle ilgili ek programlama bilgisi olarak NASA'nin programlama prensiplerine baktiginizda en fazla sadece gösterici/pointer (Örnek: int *p) kullanim kurali vardir. Yani 2 dolayli (int **p) ya da 3 dolayli (int ***p) kullanimi yoktur.
4) Fonksiyonlari gösteren göstericilerde vardir örnek olarak.
int SampleFunc(const void* par1, const void *par2);
int(*func)(const void*, const void*);
int main()
{
const int* a = 8;
const int* b = 2;
func = SampleFunc;
int test = func(&a, &b);
printf("%d", test);
return 0;
}
int SampleFunc(const void* par1, const void* par2)
{
return ((*(int*)par1) - (*(int *)par2));
}
5) isaretci kullanimina C ve C++ ayirimlarina dikkat etmek zorunda oldugunuz özel durumlarda mevcuttur. Bazi durumlarda C ile yazdiginiz kodlar C++ ile calismayabilir. Asagidaki kodlar C ile uyumlu calisir ancak C++ da hata verecektir.
void* TestFunc(size_t parameter)
{
.
.
.
}
void FuncTest(int parameter)
{
int *res = TestFunc(parameter * sizeof(int));
}
C++ ile calisabilmesi icin asagidaki satirin yazilmasi gerekmektedir.
int *res = (int*)TestFunc(parameter * sizeof(int));
Implicit dönüstürmeyi C++ da kendiniz yapmak zorundasiniz. Cünkü örnekteki C fonksiyonu "TestFunc" otomatik olarak int tipine Implicit dönüstürme yapmaktadir.
isaretcilerin kullanim alanlarinin cok genis oldugunu belirtmekte fayda vardir.
Saygilarimla