C Δομή και λειτουργίες

Σε αυτό το σεμινάριο, θα μάθετε να μεταδίδετε μεταβλητές struct ως ορίσματα σε μια συνάρτηση. Θα μάθετε να επιστρέφετε δομή από μια συνάρτηση με τη βοήθεια παραδειγμάτων.

Παρόμοια με τις μεταβλητές των ενσωματωμένων τύπων, μπορείτε επίσης να μεταβιβάσετε μεταβλητές δομής σε μια συνάρτηση.

Μεταβίβαση δομών σε συναρτήσεις

Σας προτείνουμε να μάθετε αυτά τα σεμινάρια προτού μάθετε πώς να μεταφέρετε δομές σε συναρτήσεις.

  • C δομές
  • Λειτουργίες C
  • Λειτουργία που καθορίζεται από το χρήστη

Δείτε πώς μπορείτε να μεταβιβάσετε δομές σε μια συνάρτηση

 #include struct student ( char name(50); int age; ); // function prototype void display(struct student s); int main() ( struct student s1; printf("Enter name: "); // read string input from the user until is entered // is discarded scanf("%(^)%*c", s1.name); printf("Enter age: "); scanf("%d", &s1.age); display(s1); // passing struct as an argument return 0; ) void display(struct student s) ( printf("Displaying information"); printf("Name: %s", s.name); printf("Age: %d", s.age); )

Παραγωγή

 Πληκτρολογήστε όνομα: Bond Εισαγάγετε ηλικία: 13 Εμφάνιση πληροφοριών Όνομα: Bond Age: 13 

Εδώ, δημιουργείται μια μεταβλητή struct τύπου s1 struct student. Η μεταβλητή μεταβιβάζεται στη display()συνάρτηση χρησιμοποιώντας display(s1);δήλωση.

Επιστροφή δομή από μια συνάρτηση

Δείτε πώς μπορείτε να επιστρέψετε τη δομή από μια συνάρτηση:

 #include struct student ( char name(50); int age; ); // function prototype struct student getInformation(); int main() ( struct student s; s = getInformation(); printf("Displaying information"); printf("Name: %s", s.name); printf("Roll: %d", s.age); return 0; ) struct student getInformation() ( struct student s1; printf("Enter name: "); scanf ("%(^)%*c", s1.name); printf("Enter age: "); scanf("%d", &s1.age); return s1; ) 

Εδώ, η getInformation()συνάρτηση καλείται χρησιμοποιώντας s = getInformation();δήλωση. Η συνάρτηση επιστρέφει μια δομή τύπου struct student. Η επιστρεφόμενη δομή εμφανίζεται από τη main()συνάρτηση.

Παρατηρήστε ότι, ο τύπος επιστροφής getInformation()είναι επίσης struct student.

Περνώντας δομή με αναφορά

Μπορείτε επίσης να περάσετε δομές με αναφορά (με παρόμοιο τρόπο όπως μεταβιβάζετε μεταβλητές ενσωματωμένου τύπου με αναφορά). Σας προτείνουμε να διαβάσετε το σεμινάριο αναφοράς με αναφορές πριν συνεχίσετε.

Κατά τη διέλευση μέσω αναφοράς, οι διευθύνσεις μνήμης των μεταβλητών δομής μεταβιβάζονται στη συνάρτηση.

 #include typedef struct Complex ( float real; float imag; ) complex; void addNumbers(complex c1, complex c2, complex *result); int main() ( complex c1, c2, result; printf("For first number,"); printf("Enter real part: "); scanf("%f", &c1.real); printf("Enter imaginary part: "); scanf("%f", &c1.imag); printf("For second number, "); printf("Enter real part: "); scanf("%f", &c2.real); printf("Enter imaginary part: "); scanf("%f", &c2.imag); addNumbers(c1, c2, &result); printf("result.real = %.1f", result.real); printf("result.imag = %.1f", result.imag); return 0; ) void addNumbers(complex c1, complex c2, complex *result) ( result->real = c1.real + c2.real; result->imag = c1.imag + c2.imag; ) 

Παραγωγή

 Για τον πρώτο αριθμό, Εισαγάγετε πραγματικό μέρος: 1.1 Εισαγάγετε φανταστικό μέρος: -2.4 Για δεύτερο αριθμό, Εισαγάγετε πραγματικό μέρος: 3.4 Εισαγάγετε φανταστικό μέρος: -3.2 αποτέλεσμα.real = 4.5 αποτέλεσμα.imag = -5.6 

Στο παραπάνω πρόγραμμα, τρεις μεταβλητές δομής c1, c2 και η διεύθυνση του αποτελέσματος μεταβιβάζονται στη addNumbers()συνάρτηση. Εδώ, το αποτέλεσμα περνά με αναφορά.

Όταν addNumbers()αλλάζει η μεταβλητή αποτελέσματος μέσα στο, η μεταβλητή αποτελέσματος μέσα στη main()συνάρτηση αλλάζει επίσης ανάλογα.

ενδιαφέροντα άρθρα...