Κάθε πρόγραμμα C είναι μια συλλογή συναρτήσεων. Μάθετε τα πάντα για αυτά τα χρήσιμα επαναχρησιμοποιήσιμα κομμάτια κώδικα, από τον τρόπο ορισμού τους έως το τι σημαίνει το κενό.
Μπορεί να έχετε καλύψει τη βασική σύνταξη C, με απλά παραδείγματα, και τώρα αναρωτιέστε πώς να προχωρήσετε στη δημιουργία μεγαλύτερων, πραγματικών προγραμμάτων. Για αρχή, θα θέλετε να οργανώσετε τον κώδικά σας σε αποτελεσματικά μέρη, με ελάχιστη επανάληψη. Στη C, όπως στις περισσότερες γλώσσες, η απάντηση στα προβλήματά σας είναι η συνάρτηση.
Η δημιουργία και η χρήση συναρτήσεων στο C είναι απλή και αποφέρει πολλά οφέλη. Οι λειτουργίες σάς επιτρέπουν να αναλύετε πολύπλοκα προγράμματα σε μικρότερα κομμάτια. Παρέχουν δυνατότητα επαναχρησιμοποίησης, τόσο στο αρχικό σας πρόγραμμα, όσο και σε σχετικές βιβλιοθήκες ή άλλα ξεχωριστά προγράμματα.
Για να ξεκινήσετε, θα πρέπει να μάθετε σχετικά με τις δηλώσεις συναρτήσεων, τα πρωτότυπα, τις παραμέτρους και τις δηλώσεις επιστροφής.
Τι είναι οι συναρτήσεις στο C;
Στον προγραμματισμό C
, μια συνάρτηση είναι μια ονομαζόμενη ενότητα κώδικα που κάνει κάτι όταν της το ζητήσετε. Βοηθά να διατηρείτε τον κώδικά σας οργανωμένο και σας επιτρέπει να χρησιμοποιείτε την ίδια ενέργεια πολλές φορές χωρίς να επαναλαμβάνεστε.Το απλούστερο παράδειγμα είναι αυτό που έχετε ήδη χρησιμοποιήσει: η συνάρτηση main(). Η κύρια λειτουργία είναι ιδιαίτερα ιδιαίτερη επειδή λειτουργεί ως το κύριο σημείο εισόδου για οποιοδήποτε πρόγραμμα C. Μπορείτε επίσης να χρησιμοποιήσετε συναρτήσεις βιβλιοθήκης, οι οποίες είναι αυτές που έχει ήδη γράψει κάποιος άλλος ή μπορείτε να γράψετε τις δικές σας συναρτήσεις που ορίζονται από το χρήστη.
Λειτουργίες: Δήλωση, Ορισμός και Κλήση
Αυτές οι τρεις πτυχές είναι θεμελιώδεις για τη χρήση των συναρτήσεων.
Δήλωση Λειτουργίας
Αυτό παρέχει πληροφορίες σχετικά με το όνομα, τον τύπο επιστροφής και τις παραμέτρους μιας συνάρτησης, επιτρέποντας τη χρήση της πριν από τον πλήρη ορισμό της. Ονομάζεται επίσης πρωτότυπο λειτουργίας. Ακολουθεί αυτή την απλή σύνταξη:
return_type function_name(parameters);
Οπου:
- επιστροφή_τύπου είναι ο τύπος δεδομένων της τιμής που επιστρέφει η συνάρτηση. Μπορεί να είναι οποιοσδήποτε έγκυρος τύπος δεδομένων C ή κενός εάν η συνάρτηση δεν επιστρέψει τιμή.
- όνομα_λειτουργίας είναι το όνομα που δίνετε στη συνάρτηση. Θα το χρησιμοποιήσετε για να καλέσετε τη συνάρτηση αργότερα.
- Παράμετροι είναι μια λίστα παραμέτρων εισόδου που δέχεται η συνάρτηση, εάν υπάρχουν. Κάθε παράμετρος αποτελείται από έναν τύπο δεδομένων ακολουθούμενο από ένα όνομα παραμέτρου που χωρίζεται με κόμματα.
Για παράδειγμα, εδώ είναι μια απλή δήλωση συνάρτησης:
intadd(int a, int b);
Ορισμός συνάρτησης
Όταν καλείτε μια συνάρτηση, εκτελεί τον κώδικα που καθορίζεται στον ορισμό της. Περιλαμβάνει το όνομα της συνάρτησης, τον τύπο επιστροφής, τη λίστα παραμέτρων και τις δηλώσεις που καθορίζουν τη συμπεριφορά της. Εδώ είναι η σύνταξη:
return_type function_name(parameters){
// Function body - code that defines what the function does
// Return a value if applicable
return value;
}
Ας αναλύσουμε τμήματα της σύνταξης:
Σώμα λειτουργίας: Αυτό είναι το μπλοκ κώδικα που περικλείεται σε σγουρά άγκιστρα {}. Περιέχει τις οδηγίες που ορίζουν τι κάνει η συνάρτηση όταν καλείται.
Δήλωση επιστροφής: Εάν η συνάρτηση έχει τύπο επιστροφής διαφορετικό από κενός, ο ΕΠΙΣΤΡΟΦΗ Η δήλωση στέλνει μια τιμή πίσω στον καλούντα. Αυτή η τιμή πρέπει να ταιριάζει με τον καθορισμένο τύπο επιστροφής.
Ακολουθεί ένα απλό παράδειγμα ορισμού συνάρτησης:
intadd(int a, int b){
int sum = a + b;
return sum;
}
Κλήση λειτουργίας
Ακριβώς όπως το μαγείρεμα, μπορεί να έχετε μια συνταγή (ορισμός λειτουργίας) και ορισμένα συστατικά (επιχειρήματα), αλλά πρέπει να ακολουθήσετε τις οδηγίες για να έχετε αποτέλεσμα. Μια κλήση συνάρτησης θα εκτελέσει τη συνάρτηση με δεδομένα ορίσματα. ορίστε η σύνταξη:
return_type result = function_name(arguments);
επιχειρήματα: Αυτές είναι οι τιμές ή οι εκφράσεις που μεταβιβάζετε στη συνάρτηση ως είσοδοι. Διαχωρίστε κάθε όρισμα με κόμμα. Ο αριθμός, η σειρά και οι τύποι δεδομένων των ορισμάτων πρέπει να ταιριάζουν με τη λίστα παραμέτρων της συνάρτησης.
αποτέλεσμα: Εάν η συνάρτηση έχει τύπο επιστροφής διαφορετικό από κενός, μπορείτε να καταγράψετε την επιστρεφόμενη τιμή χρησιμοποιώντας μια μεταβλητή του κατάλληλου τύπου δεδομένων.
Ακολουθεί ένα παράδειγμα κλήσης συνάρτησης:
#include
// Function prototype
intadd(int a, int b);intmain(){
int x = 5, y = 3;// Call the function and store the result in 'sum'
int sum = add(x, y);
printf("The sum of %d and %d is %d\n", x, y, sum);
return0;
}
// Function definition
intadd(int a, int b){
return a + b;
}
Ακολουθώντας αυτά τα τρία βήματα—δηλώνοντας τη συνάρτηση, παρέχοντας την υλοποίησή της και καλώντας την με κατάλληλα ορίσματα—μπορείτε να χρησιμοποιήσετε αποτελεσματικά συναρτήσεις για να εκτελέσετε διάφορες εργασίες στο δικό σας πρόγραμμα.
Παράμετροι συνάρτησης και τιμές επιστροφής
Οι παράμετροι είναι μεταβλητές που δηλώνονται στη δήλωση ή τον ορισμό της συνάρτησης που λειτουργούν ως κράτη μέλη θέσης για τις τιμές που μεταβιβάζονται στη συνάρτηση όταν καλείται. Σας επιτρέπουν να μεταβιβάζετε δεδομένα στη συνάρτηση, επιτρέποντάς της να λειτουργεί και να χειρίζεται αυτά τα δεδομένα. Οι τιμές επιστροφής είναι οι τιμές που παράγει μια συνάρτηση και στέλνει πίσω στον καλούντα.
Υπάρχουν δύο μέθοδοι μετάδοσης παραμέτρων.
Περάστε από την αξία
Με αυτήν την προσέγγιση, μια κλήση συνάρτησης αντιγράφει την τιμή του πραγματικού ορίσματος στην παράμετρο της συνάρτησης. Οι αλλαγές που γίνονται στην παράμετρο εντός της συνάρτησης δεν επηρεάζουν το αρχικό όρισμα.
Για παράδειγμα:
#include
intsquare(int num){
num = num * num;
return num;
}intmain(){
int x = 5;
int y = square(x);// Output: x and y after function call: 5 25
printf("x and y after function call: %d %d\n", x, y);
return0;
}
- Η συνάρτηση τετραγώνου παίρνει μια ακέραια παράμετρο, αρ.
- Η συνάρτηση τετραγώνου υπολογίζει το τετράγωνο του num, ενημερώνει την τιμή του και επιστρέφει αυτή τη νέα τιμή.
- Η κύρια συνάρτηση δηλώνει μια ακέραια μεταβλητή, Χ, και του εκχωρεί την τιμή 5.
- Στη συνέχεια καλεί τη συνάρτηση τετραγώνου, περνώντας της την τιμή του x. Αντιστοιχίζει το αποτέλεσμα σε μια δεύτερη μεταβλητή, y.
- Μετά την κλήση συνάρτησης, το main εκτυπώνει τις τιμές των x και y. Η τιμή x παραμένει η ίδια επειδή η αλλαγή της παραμέτρου num μέσα στο τετράγωνο δεν επηρεάζει το αρχικό x.
Περάστε από την αναφορά
Χρησιμοποιώντας αυτήν την προσέγγιση, μεταβιβάζετε τη διεύθυνση μνήμης (δείκτη) μιας τιμής σε μια συνάρτηση. Οι αλλαγές που γίνονται στην παράμετρο μέσα στη συνάρτηση επηρεάζουν την αρχική τιμή έξω από αυτήν.
Οι δείκτες, συμπεριλαμβανομένης της χρήσης τους ως παραμέτρων, είναι μία από τις πτυχές του C που το κάνουν διαφορετικό από μια γλώσσα όπως η Python.
#include
voidsquare(int *num){
*num = *num * *num;
}intmain(){
int x = 5;
square(&x);
// Output: x after function call: 25
printf("x after function call: %d\n", x);
return0;
}
- ο τετράγωνο η συνάρτηση παίρνει έναν ακέραιο δείκτη (int *) παράμετρος, αρ. Δεν επιστρέφει τιμή.
- Η συνάρτηση τετραγώνου υπολογίζει το τετράγωνο της τιμής που αρ περιέχει και ενημερώνει αυτήν την τιμή χρησιμοποιώντας τον τελεστή αποαναφοράς δείκτη, *.
- ο κύριος η συνάρτηση δηλώνει μια ακέραια μεταβλητή, Χ, και του εκχωρεί την τιμή 5.
- Στη συνέχεια καλεί το τετράγωνο λειτουργία με δείκτη προς Χ χρησιμοποιώντας τη διεύθυνση-του τελεστή: &Χ.
- Μετά την κλήση συνάρτησης, το main εκτυπώνει την τιμή του Χ, που είναι τώρα 25 αφού οι αλλαγές σε *αριθμ μεσα στην τετράγωνο η λειτουργία επηρεάζει το πρωτότυπο Χ.
Συνοπτικά, η βασική διαφορά μεταξύ των δύο μεθόδων είναι πώς οι αλλαγές στην παράμετρο μέσα στη συνάρτηση επηρεάζουν την αρχική τιμή έξω από αυτήν. Το Pass by value δημιουργεί ένα αντίγραφο, ενώ το pass by reference (pointer) επιτρέπει τον άμεσο χειρισμό της αρχικής τιμής.
Άλλες γλώσσες έχουν συχνά ένα ισοδύναμο δείκτες C, αλλά γενικά λειτουργούν σε υψηλότερο επίπεδο. Ένα παράδειγμα είναι Υποστήριξη της C# για μεταβλητές out.
Κενές Λειτουργίες
Οι κενές συναρτήσεις στον προγραμματισμό C είναι συναρτήσεις που δεν επιστρέφουν τιμή. Χρησιμοποιήστε τα για να εκτελέσετε ενέργειες ή εργασίες χωρίς να παράγετε αποτέλεσμα. Μπορούν να αλλάξουν τις παραμέτρους τους χρησιμοποιώντας pass by reference, αλλά δεν χρειάζεται να το κάνουν.
Ακολουθεί ένα παράδειγμα μιας συνάρτησης κενού:
#include
// Void function with no parameters
voidgreet(){
printf("Hello, MUO!");
}intmain(){
// Call the void function, output: "Hello, MUO!"
greet();
return0;
}
Οι λειτουργίες Void είναι χρήσιμες για την εκτέλεση ενεργειών, την εκτύπωση μηνυμάτων, την τροποποίηση δεδομένων ή την εκτέλεση εργασιών χωρίς να απαιτείται επιστροφή τιμής.
Εξερευνήστε τις συναρτήσεις στον προγραμματισμό C
Η εξάσκηση μέσω της δημιουργίας συναρτήσεων βελτιώνει την κατανόηση και την εφαρμογή σας στον προγραμματισμό C. Επιπλέον, αυξάνει την αναγνωσιμότητα κώδικα και την ευκολία συντήρησης. Βουτήξτε σε διάφορες εφαρμογές λειτουργιών για να ξεκλειδώσετε τα πλεονεκτήματά τους.
Όταν έχετε κατακτήσει τις βασικές αρχές των συναρτήσεων C και θέλετε να αμφισβητήσετε τον εαυτό σας, σκεφτείτε να εμβαθύνετε στην αναδρομή.