Επιστροφή συμβολοσειράς από μια συνάρτηση C

Epistrophe Symboloseiras Apo Mia Synartese C



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

Αυτό το άρθρο εστιάζει σε μια τέτοια λειτουργία στο σειρά δομή δεδομένων, η οποία επιστρέφει α σειρά από μια συνάρτηση C.







Επιστροφή συμβολοσειράς από μια συνάρτηση C

Οπως και σειρά είναι ένας πίνακας χαρακτήρων και για να επιστρέψει συμβολοσειρά από μια συνάρτηση C, ένας δείκτης στη δομή δεδομένων συμβολοσειράς πρέπει να περάσει ως όρισμα από τη συνάρτηση κλήσης στην καλούμενη συνάρτηση ως παράμετρος. Στη συνέχεια, ο δείκτης μπορεί να χρησιμοποιηθεί για να δείξει έναν πίνακα χαρακτήρων. Μόλις ο δείκτης δείχνει σε μια σειρά χαρακτήρων, το σειρά Η τιμή μπορεί να επιστραφεί από την καλούμενη συνάρτηση χρησιμοποιώντας την εντολή return.



Μπορείτε να δείτε το παρακάτω παράδειγμα για καλύτερη κατανόηση.



#include

const char * το όνομά μου ( ) {
ΕΠΙΣΤΡΟΦΗ 'Γιάννης' ;
}

int main ( κενός ) {
printf ( '%μικρό' , το όνομά μου ( ) ) ;
}





Στον παραπάνω κώδικα, αντί να δηλώσουμε τη μεταβλητή όπως κάνουμε κανονικά, χρησιμοποιήσαμε έναν δείκτη μαζί της, ώστε όταν επιστρέψουμε αυτήν τη συμβολοσειρά, να μην παρουσιαστεί σφάλμα.

Παραγωγή




Μια συνάρτηση C δεν μπορεί να επιστρέψει a σειρά που έχει καθοριστεί ως τοπική μεταβλητή, καθώς η μεταβλητή θα αφαιρεθεί (απελευθερωθεί) αμέσως μόλις ολοκληρωθεί η εκτέλεση της συνάρτησης, καθιστώντας τη μη διαθέσιμη και ενεργοποιώντας μια προειδοποίηση όπως παρακάτω:

#include

const char myName ( ) {
όνομα χαρ = 'Γιάννης' ;
ΕΠΙΣΤΡΟΦΗ όνομα;
}

int main ( κενός ) {
printf ( '%μικρό' , το όνομά μου ( ) ) ;
}

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

Παραγωγή


Έτσι, μπορείτε να γράψετε τον κώδικα με τον ακόλουθο τρόπο:

#include

const char * το όνομά μου ( ) {
απανθρακώνω * όνομα = 'Γιάννης' ;
ΕΠΙΣΤΡΟΦΗ όνομα;
}
int main ( κενός ) {
printf ( '%μικρό' , το όνομά μου ( ) ) ;
}

Παραγωγή


Οι μεταβλητές κατανέμονται στη στοίβα από προεπιλογή, που είναι ο πραγματικός λόγος για την παραπάνω δήλωση. Ωστόσο, όταν δηλώνεται ένας δείκτης, η τιμή στην οποία υποδεικνύει εκχωρείται στον σωρό, ο οποίος δεν διαγράφεται μετά την ολοκλήρωση της συνάρτησης. Μόλις εκχωρηθεί η μνήμη, ένα αντίγραφο του σειρά πρέπει να δημιουργηθεί από την αρχική θέση μνήμης που δείχνει ο δείκτης και το αντίγραφο πρέπει να επιστραφεί από την καλούμενη συνάρτηση. Η συνάρτηση κλήσης θα έχει στη συνέχεια τον έλεγχο των αρχικών δεδομένων συμβολοσειράς, ενώ η καλούμενη συνάρτηση είναι υπεύθυνη για την απελευθέρωση του εκχωρημένου χώρου.

συμπέρασμα

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