Stringi tagastamine funktsioonist C

Stringi Tagastamine Funktsioonist C



A string on märgijada, mis koosneb kas ühest märgist või mitmest märgist ja on arvutiprogrammeerimises oluline andmestruktuur. Töötades koos stringid C-s tuleb teha teatud toimingud string andmetüüp, näiteks lähtestamine string , sisu määramine, konkateneerimine stringid , võrdlemine stringid ja tagastades string .

See artikkel keskendub ühele sellisele toimingule string andmestruktuur, mis tagastab a string C-funktsioonist.







Stringi tagastamine funktsioonist C

Nagu string on märkide massiiv ja C-funktsioonist stringi tagastamiseks tuleb stringi andmestruktuuri osuti kutsuvast funktsioonist kutsutavale funktsioonile parameetrina edastada. Seejärel saab kursorit kasutada märkide massiivile osutamiseks. Kui kursor osutab märkide massiivile, siis string väärtust saab kutsutud funktsioonist tagastada, kasutades return-lauset.



Parema mõistmise huvides võite vaadata allolevat näidet.



#include

konst char * minu nimi ( ) {
tagasi 'John' ;
}

int main ( tühine ) {
printf ( '%s' , minu nimi ( ) ) ;
}





Ülaltoodud koodis kasutasime muutuja tavapäraselt deklareerimise asemel sellega kursorit, et selle stringi tagastamisel viga ei tekiks.

Väljund




C-funktsioon ei saa a tagastada string mis on määratud kohaliku muutujana, kuna muutuja eemaldatakse (vabastatakse) kohe, kui funktsioon on lõpetanud, muutes selle kättesaamatuks ja käivitades hoiatuse järgmiselt:

#include

const char minuNimi ( ) {
tähe nimi = 'John' ;
tagasi nimi;
}

int main ( tühine ) {
printf ( '%s' , minu nimi ( ) ) ;
}

Selles koodis on a hoiatus käivitatakse stringi tagastamisel ilma mis tahes osuti.

Väljund


Seega saate koodi kirjutada järgmisel viisil:

#include

konst char * minu nimi ( ) {
char * nimi = 'John' ;
tagasi nimi;
}
int main ( tühine ) {
printf ( '%s' , minu nimi ( ) ) ;
}

Väljund


Muutujad eraldatakse virnale vaikimisi, mis on ülaltoodud avalduse tegelik põhjus. Kui aga kursor on deklareeritud, eraldatakse väärtus, millele see osutab, kuhja, mida ei tühjendata pärast funktsiooni lõpetamist. Kui mälu on eraldatud, koopia string tuleb luua kursoriga näidatud algsest mälukohast ja kutsutud funktsioonist tuleb koopia tagastada. Kutsumisfunktsioon kontrollib seejärel algseid stringiandmeid, samas kui kutsutav funktsioon vastutab eraldatud ruumi vabastamise eest.

Järeldus

C-funktsioon võib viia kursori string argumendina ja tagastage string väärtus kutsutud funktsioonis tehtud toimingute tulemusena. Selle saavutamiseks kasutatakse kursorit char*. Helistamise funktsioon vastutab selle salvestamiseks eraldatud mälu eest string , samas kui kutsutud funktsioon vastutab eraldatud ruumi vabastamise eest.