Pointers and Functions (İşaretçiler ve Fonksiyonlar)
Fonksiyon işaretçileri hakkında en kafa karıştırıcı olan şey muhtemelen onların sözdizimidir. İşaretçinin işaret edeceği fonksiyonların veri türünü, daha sonra yıldız işaretiyle başlayarak işaretçinin adını parantez içinde yazarız. Köşeli parantez içinde, işaretçinin işaret edeceği fonksiyon türlerini parametrelerle birlikte parantezler yapılır. Bunun da gösterdiği gibi, fonksiyon işaretçileri aynı veri türüne ve parametre türlerine (ve aynı zamanda parametre sayısına) sahip işlevlere işaret etmelidir.
Syntax (Sözdizimi)
veri tipi (*degiskenAdi)( parametreler);. void (*degiskenAdi)();
Örnek:
#include <iostream> using namespace std; void fonks(int x) { cout << "x değeri: " << x << endl; } int main() { void (*fonkPtr)(int) = &fonks; (*fonkPtr)(16); return 0; }
Çıktı:
x değeri: 16
Örnek:
#include <iostream> using namespace std; void fonks1() { cout << "1. Fonksiyon" << endl; } void fonks2() { cout << "2. Fonksiyon" << endl; } void fonks3() { cout << "3. Fonksiyon" << endl; } int main() { void (*fonksPtr)(); fonksPtr = &fonks1; fonksPtr(); fonksPtr = &fonks2; fonksPtr(); fonksPtr = &fonks3; fonksPtr(); return 0; }
Çıktı:
1. Fonksiyon 2. Fonksiyon 3. Fonksiyon
Örnek:
#include <iostream> using namespace std; void degerleriDegistir(double*, double*); void degerleriDegistir(double* x1, double* x2) { double gecici; gecici = *x1; *x1 = *x2; *x2 = gecici; } int main() { double x = 16.975, y = 457.64; cout << "Değerlerin değişmeden önceki değerleri:" << endl; cout << "x: " << x << endl; cout << "y: " << y << endl << endl; degerleriDegistir(&x, &y); cout << "Değerlerin değiştikten sonraki değerleri:" << endl; cout << "x: " << x << endl; cout << "y: " << y << endl; return 0; }
Çıktı:
Değerlerin değişmeden önceki değerleri: x: 16.975 y: 457.64 Değerlerin değiştikten sonraki değerleri: x: 457.64 y: 16.975