Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> C /C + + Προγραμματισμός

Πώς να χρησιμοποιήσετε επανάκλησης Λειτουργία σε C

λειτουργιών επανάκλησης είναι προηγμένα χαρακτηριστικά σε γλώσσα προγραμματισμού C . Η λειτουργία επανάκλησης βοηθά στην απομόνωση της εφαρμογής της συνάρτησης βιβλιοθήκης από τον καλούντα της βιβλιοθήκης . Με τον τρόπο αυτό , μπορεί τώρα να αναπτυχθεί ανεξάρτητα χωρίς καμία γνώση της εφαρμογής που πρόκειται να καλέσετε τη λειτουργία της βιβλιοθήκης της βιβλιοθήκης . Αυτό βοηθά στη δημιουργία συμπαγή κώδικα . Επιπλέον , βοηθά επίσης στην παράλληλη ανάπτυξη , όπως το πρόσωπο εγγράφως τη βιβλιοθήκη δεν χρειάζεται να περιμένει κανείς για το πρόσωπο εγγράφως την αίτηση , και το αντίστροφο . Τα πράγματα που θα χρειαστείτε
compiler AC όπως gcc
συντάκτη όπως ο emacs ή " vi " για να γράψει το πρόγραμμα

Παρουσίαση Περισσότερες οδηγίες
Λειτουργίες επανάκλησης
Η 1

Μάθετε να γράψουν κώδικα C με δείκτες συναρτήσεων . Δείκτες συναρτήσεων είναι σαν οποιοδήποτε άλλο δείκτες σε C , εκτός από το ότι κατέχουν τη διεύθυνση μιας συνάρτησης . Το τμήμα κώδικα παρακάτω είναι ένα απλό παράδειγμα με τους δείκτες συναρτήσεων .

# Include

int printHello ( ) {

printf ( "Hello \\ n " ) ?

}

int printHi ( ) {

printf ( "Γεια \\ n" ) ? }


int main ( int argc , char * argv [ ] ) {

//Να αναγνωρίσει ένα δείκτη λειτουργία

int ( * p ) ( void) ?

//Στρέψτε το δείκτη συνάρτησης στη διεύθυνση μιας συνάρτησης

p = printHello ?

p ( ) ?

//Στρέψτε το δείκτη συνάρτησης στη διεύθυνση μιας άλλης λειτουργίας

p = printHi ?

p ( ) ? }

2

Αποφασίστε τι λειτουργία επανάκλησης είναι κατάλληλη για το πρόγραμμα . Για παράδειγμα , ο παρακάτω κώδικας τμήμα συγκρίνει είτε δύο ακέραιους αριθμούς ή δύο ακολουθίες χαρακτήρων ανάλογα με την αξία του το τρίτο επιχείρημα που ονομάζεται "επιλογή ". Αν δύο ακέραιοι συγκρίνονται , η συνάρτηση επιστρέφει μια τιμή από 1 , εάν ο πρώτος αριθμός είναι μεγαλύτερος από ό, τι το άλλο. Εάν σε σύγκριση με δύο σειρές χαρακτήρα , η συνάρτηση επιστρέφει την τιμή 1 αν η πρώτη ακολουθία χαρακτήρων έχει περισσότερους χαρακτήρες από το δεύτερο .

Int επανάκλησης (void * a, b * κενό , η επιλογή int) {

αν ( επιλογή == 0 ) {

int * c = ( int *) α ?

int * d = ( int * ) β ?

επιστροφή ( γ * > * δ) ?

} else if ( επιλογή == 1 ) {

char * c = ( char *) α ?

char * d = ( char * ) β ?

επιστρέψει ( strlen ( γ ) > strlen ( δ) ) ?

} }


εικόνων 3

Καλέστε τη λειτουργία επανάκλησης από τον πηγαίο κώδικα . Ας υποθέσουμε ότι ένας αλγόριθμος bubble -sort γράφεται από έναν προγραμματιστή . Αυτός ο αλγόριθμος ταξινομεί τις τιμές σε μια λίστα κατά φθίνουσα σειρά . Το ακόλουθο τμήμα κώδικα καλεί τη συνάρτηση επανάκλησης που ονομάζεται " λειτουργία " που θα κάνει τη σύγκριση .

Int bubbleSort ( int * τιμές , int len , int ( * func ) (void * a, void * b, int c ) ) {

int ( * p ) (void * m , void * n , int p) ?

int i , j ?

p = λειτουργία ?

για ( i = 0 ? i

για ( j = 0 ? j

αν ( p ( & τιμές [ ,">

gia ( i = 0 ?̱ i

gia ( j = 0 ?̱ j

an ( p ( & timés [ i ] , και οι τιμές [ ι ] , 0 ) ) {

int t = τιμές [ i ] ?

τιμές [ i ] = τιμές [ ι ] ?

τιμές [ ,"i ] , kai oi timés [ i ] , 0 ) ) {

int t = timés [ i ] ?̱

timés [ i ] = timés [ i ] ?̱

timés [ j] = t ?

} }


} }


Η 4

Καλέστε τη λειτουργία που επικαλείται το επανάκλησης λειτουργεί από το κύριο πρόγραμμα που απαιτεί το αποτέλεσμα του είδους . Για παράδειγμα bubble -sort , ο «κύριος » λειτουργία καλεί τη συνάρτηση bubble -sort με τη λειτουργία επανάκλησης καθορίσατε στο Βήμα 2 .

Int main ( int argc , char * argv [ ] ) {

int i ?

int a [ 5 ] = { 4 , 2 , 5 , 9 , 1 } ?

bubbleSort ( α , 5 , επανάκλησης ) ?

για ( i = 0 ? i <5 ? i + + ) {

printf ( "% d \\ n" , a [i ] ) ?

}

}


Η

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα