Λειτουργίες
Ο καλύτερος τρόπος να αναπτυχθεί και να διατηρηθεί ένα μεγάλο πρόγραμμα είναι να κατασκευαστεί από τα μικρότερα κομμάτια κάθε ένα από τα οποία είναι ευκολότερο να διαχειριστεί (μια τεχνική καλούμενη μερικές φορές η διαίρεση και να κατακτήσει). Οι λειτουργίες επιτρέπουν στον προγραμματιστή για να διαμορφώσουν το πρόγραμμα.
Οι λειτουργίες επιτρέπουν ότι τα περίπλοκα προγράμματα για να είναι επάνω στους μικρούς φραγμούς, κάθε ένας από τους οποίους είναι ευκολότερος να γράψει, διαβασμένος, και να διατηρήσει. Έχουμε αντιμετωπίσει ήδη τη λειτουργία κύριο και χρησιμοποιημένο printf από την τυποποιημένη βιβλιοθήκη. Μπορούμε φυσικά να κάνουμε τις λειτουργίες και τα αρχεία επιγραφών μας. Μια λειτουργία έχει το ακόλουθο σχεδιάγραμμα:
return-type function-name ( argument list if necessary )
{
local-declarations;
statements ;
return return-value;
}
Εάν ο επιστροφή-τύπος παραλείπεται, το γ προκαθορίζει στο INT. Η επιστροφή-αξία πρέπει να είναι του δηλωμένου τύπου. Όλες οι μεταβλητές που δηλώνονται μέσα στις λειτουργίες καλούνται τοπικές μεταβλητές, δεδομένου ότι είναι γνωστές μόνο στη λειτουργία στην οποία έχουν καθοριστεί.
Μερικές λειτουργίες έχουν έναν κατάλογο παραμέτρου που παρέχουν μια μέθοδο επικοινωνίας μεταξύ της λειτουργίας, και την ενότητα που κάλεσαν τη λειτουργία. Οι παράμετροι είναι επίσης τοπικές μεταβλητές, δεδομένου ότι δεν είναι διαθέσιμες έξω από τη λειτουργία. Τα προγράμματα κάλυψαν μέχρι τώρα όλων έχουν τον κεντρικό αγωγό, ο οποίος είναι μια λειτουργία.
Μια λειτουργία μπορεί απλά να εκτελέσει έναν στόχο χωρίς επιστροφή οποιασδήποτε αξίας, οπότε σ'αυτή την περίπτωση έχει το ακόλουθο σχεδιάγραμμα:
void function-name ( argument list if necessary )
{
local-declarations ;
statements;
}
Τα επιχειρήματα περνούν πάντα από η αξία στις κλήσεις λειτουργίας γ. Αυτό σημαίνει ότι τα τοπικά αντίγραφα των τιμών των επιχειρημάτων περνούν στις ρουτίνες. Οποιαδήποτε αλλαγή που γίνεται στα επιχειρήματα εσωτερικά στη λειτουργία γίνεται μόνο στα τοπικά αντίγραφα των επιχειρημάτων.
Προκειμένου να αλλαχτεί ή να καθοριστεί ένα επιχείρημα στον κατάλογο επιχειρήματος, αυτό το επιχείρημα πρέπει να περάσουν ως διεύθυνση. Χρησιμοποιείτε τις κανονικές μεταβλητές εάν η λειτουργία δεν αλλάζει τις τιμές εκείνων των επιχειρημάτων. ΠΡΕΠΕΙ να χρησιμοποιήσετε τους δείκτες εάν η λειτουργία αλλάζει τις τιμές εκείνων των επιχειρημάτων.
Μάθετε με τα παραδείγματα:
#include <stdio.h>
void exchange ( int *a, int *b )
{
int temp;
temp = *a;
*a = *b;
*b = temp;
printf(" From function exchange: ");
printf("a = %d, b = %d\n", *a, *b);
}
void main()
{
int a, b;
a = 5;
b = 7;
printf("From main: a = %d, b = %d\n", a, b);
exchange(&a, &b);
printf("Back in main: ");
printf("a = %d, b = %d\n", a, b);
}
Και η παραγωγή αυτού του προγράμματος θα επιδειχθεί ως εξής:
From main: a = 5, b = 7
From function exchange: a = 7, b = 5
Back in main: a = 7, b = 5 |
|