Sobes.tech
Junior — Middle

Εξηγήστε πώς λειτουργούν οι δείκτες σε συναρτήσεις με το παράδειγμα μιας συνάρτησης που περιέχει μέσα της μια άλλη συνάρτηση.

sobes.tech AI

Απάντηση από AI

Στο iOS (Swift ή Objective-C), η έννοια των δεικτών σε συναρτήσεις υλοποιείται μέσω closures ή blocks. Στη γλώσσα C, στην οποία βασίζεται το Objective-C, οι δείκτες σε συναρτήσεις επιτρέπουν την παράδοση συναρτήσεων ως παραμέτρους ή την αποθήκευσή τους για μελλοντική κλήση.

Παράδειγμα σε C με μια συνάρτηση που περιέχει μια άλλη συνάρτηση (μέσω εσωτερικής συνάρτησης ή συνάρτησης που επιστρέφει δείκτη):

#include <stdio.h>

// Στη C, δεν υπάρχουν εσωτερικές συναρτήσεις, αλλά μπορούμε να επιστρέψουμε δείκτη σε συνάρτηση
int innerFunction(int x) {
    return x * x;
}

int (*outerFunction())(int) {
    // Επιστρέφει δείκτη στην innerFunction
    return &innerFunction;
}

int main() {
    int (*funcPtr)(int) = outerFunction();
    int result = funcPtr(5); // κλήση της innerFunction μέσω δείκτη
    printf("Αποτέλεσμα: %d\n", result); // Έξοδος: Αποτέλεσμα: 25
    return 0;
}

Στο Swift, μπορείτε να χρησιμοποιήσετε closures:

func outerFunction() -> (Int) -> Int {
    func innerFunction(x: Int) -> Int {
        return x * x
    }
    return innerFunction
}

let funcPtr = outerFunction()
print(funcPtr(5)) // 25

Έτσι, οι δείκτες σε συναρτήσεις επιτρέπουν την δυναμική επιλογή και κλήση συναρτήσεων, κάτι που είναι χρήσιμο για callbacks και λειτουργικό προγραμματισμό.