C’de Pointer Aritmetiği – Fonksiyona Pointer Geçirme

Fonksiyonel programlamaya uygun olarak tasarlanacak bir programda şüphesiz ki pointer’lar da fonksiyon trafiğinden nasibini alacaktır. Çok da mantığına inmeden basitçe bunu nasıl yapabileceğimizi göstereyim;

Örneğin bir sayacımız olsun.Amacımız da bu sayacı main fonksiyonu dışında bir fonksiyonda arttırıp, main’e geri döndürmek ve değerinin değişmesini sağlamak olsun.

Bu işlemi pointer kullanmadan, değişkeni global tanımlayarak da sağlayabilirsiniz.

<h1>include <stdio.h></h1>
<h1>include <stdlib.h></h1>
void deger_arttir(int *);
int main()
{
int i;

int sayac = 0;

int *ptr_sayac;

ptr_sayac = &sayac;//Pointer 'sayac' degiskeninin adresini gosteriyor…

//Sayac degiskeni ile islem yapilmadan, fonksiyona sayac degiskeninin pointeri gonderiliyor ve deger arttirma islemi yapiliyor…
for(i=0;i<10;i++)
{
deger_arttir(ptr_sayac);
printf("Sayacin yeni degeri: %d\n",sayac);
}
return 0;
}

void deger_arttir(int *degiskene_ait_pointer) //Disaridan integer deger tutan bir hucreyi isaret eden pointer alinip, degeri arttiriliyor…
{
*degiskene_ait_pointer += 1;
}