(Translated by https://www.hiragana.jp/)
Δείκτης συνάρτησης - Βικιπαίδεια Μετάβαση σしぐまτたうοおみくろん περιεχόμενο

Δείκτης συνάρτησης

Από τたうηいーた Βικιπαίδεια, τたうηいーたνにゅー ελεύθερη εγκυκλοπαίδεια

Σしぐまτたうοおみくろんνにゅー πぱいρογραμματισμό Ηいーた/Υうぷしろん ένας δείκτης συνάρτησης (Αγγλικά: Function pointer) είναι ένα είδος δείκτη δεδομένων οおみくろん οποίος υποστηρίζεται από τたうηいーたνにゅー τρίτη γενιά γλωσσών προγραμματισμού όπως τたうηいーた Fortran (ονομάζομαι procedure pointers σしぐまτたうηいーたνにゅー Fortran [1]) κかっぱαあるふぁιいおた τたうηいーた C/C++. [2] [3] Ηいーた διαφορά μみゅーεいぷしろん τたうοおみくろんνにゅー απλό δείκτη είναι ότι ένας δείκτης σしぐまεいぷしろん συνάρτηση δείχνει τたうοおみくろん σημείο σしぐまτたうηいーたνにゅー μνήμη τたうοおみくろん οποίο περιέχει εκτελέσιμο κώδικα κかっぱαあるふぁιいおた όχι δεδομένα. Όταν χρησιμοποιείται οおみくろん τελεστής έμμεσης αναφοράς (dereferencing operator) καλείται ηいーた συνάρτηση όπου οおみくろん δείκτης δείχνει μみゅーεいぷしろん τたうαあるふぁ αντίστοιχα ορίσματα/παραμέτρους. Οおみくろんιいおた δείκτες συναρτήσεων χρησιμοποιούνται γがんまιいおたαあるふぁ τたうηいーたνにゅー υλοποίηση callbacks (όπου δεδομένα μαζί μみゅーεいぷしろん ένα δείκτη συνάρτησης περνάνε ως παράμετροι σしぐまεいぷしろん μみゅーιいおたαあるふぁ μέθοδο ηいーた οποία σしぐまτたうηいーたνにゅー συνέχεια κάνει τたうηいーたνにゅー κλήση της συνάρτησης αυτής). [4]

Σしぐまτたうοおみくろん παρακάτω παράδειγμα έχουμε 2 συναρτήσεις μみゅーεいぷしろん ίδια ορίσματα (prototype), τたうηいーたνにゅー add κかっぱαあるふぁιいおた τたうηいーたνにゅー sub κかっぱαあるふぁιいおた τις καλούμε μέσω τたうοおみくろんυうぷしろん δείκτη συνάρτησης fptrCompute. Σしぐまτたうηいーたνにゅー C/C++ δでるたεいぷしろんνにゅー μπορούμε νにゅーαあるふぁ περνάμε συναρτήσεις ως παραμέτρους σしぐまεいぷしろん άλλες συναρτήσεις κかっぱαあるふぁιいおた αυτό μπορεί νにゅーαあるふぁ γίνει μόνο χρησιμοποιώντας δείκτες συναρτήσεων.

#include <stdio.h>
 
// Ορισμός δείκτη συνάρτησης  
int (*fptrCompute) (int,int);
 
//  Συναρτήσεις
int add(int n1, int n2) { return n1+n2; }
int sub(int n1, int n2) { return n1-n2; }
 
int main() {
   //  Αρχικοποίηση δείκτη μみゅーεいぷしろん τたうηいーたνにゅー συνάρτηση add 
   fptrCompute = add; 
 
   // επιστρέφουν 9 κかっぱαあるふぁιいおた στις δύο περιπτώσεις
   int result1 = add(4,5);
   int result2 = fptrCompute(4,5); 
   // ισοδύναμη κλήση μみゅーεいぷしろん dereferencing
   // int result2 = (*fptrCompute)(4,5);
 
   // 9 9
   printf("%d\t%d\n", result1, result2); 
 
   //  Δείκτης μみゅーεいぷしろん τたうηいーたνにゅー συνάρτηση sub
   fptrCompute = sub; 

   int result3 = fptrCompute(4,5); 

   // -1
   printf("%d\n", result3);

   return 0;
}
  1. «Working with Pointers». gcc.gnu.org. Ανακτήθηκε στις 24 Μαΐου 2014. 
  2. Andrew J. Miller. «Fortran Examples». http://www.esm.psu.edu/~ajm138 fortranexamples.html. Ανακτήθηκε στις 14 Σεπτεμβρίου 2013. 
  3. «The Function Pointer Tutorials». http://www.newty.de/: logo. Αρχειοθετήθηκε από τたうοおみくろん πρωτότυπο στις 16 Μαΐου 2011. Ανακτήθηκε στις 13 Απριλίου 2011. Function Pointers are pointers, i.e. variables, which point to the address of a function 
  4. Reese, Richard (2013). Understanding and using C pointers (1ηいーた έκδοση). Sebastopol, CA: O'Reilly Media. σελίδες 188-190. ISBN 978-1-449-34418-4.