Vrátenie reťazca z funkcie C

Vratenie Retazca Z Funkcie C



A reťazec je postupnosť znakov, ktorá pozostáva buď z jedného znaku, alebo z viacerých znakov a je dôležitou dátovou štruktúrou v počítačovom programovaní. Pri práci s struny v C je potrebné vykonať určité operácie na reťazec typ údajov, ako je napríklad inicializácia reťazec , priradenie obsahu, zreťazenie struny , porovnávanie struny a vrátením reťazec .

Tento článok sa zameriava na jednu takúto operáciu v reťazec dátová štruktúra, ktorá vracia a reťazec z funkcie C.







Vrátenie reťazca z funkcie C

Ako reťazec je pole znakov a aby sa vrátil reťazec z funkcie C, musí byť smerník na dátovú štruktúru reťazca odovzdaný ako argument z volajúcej funkcie do volanej funkcie ako parametra. Ukazovateľ sa potom môže použiť na ukazovanie na pole znakov. Akonáhle ukazovateľ ukazuje na pole znakov, reťazec hodnotu možno vrátiť z volanej funkcie pomocou príkazu return.



Pre lepšie pochopenie si môžete pozrieť nižšie uvedený príklad.



#include

const char * moje meno ( ) {
vrátiť 'John' ;
}

int main ( neplatné ) {
printf ( '%s' , moje meno ( ) ) ;
}





Vo vyššie uvedenom kóde namiesto deklarovania premennej, ako to robíme normálne, sme s ňou použili ukazovateľ, takže keď vrátime tento reťazec, nenastane žiadna chyba.

Výkon




Funkcia C nemôže vrátiť a reťazec ktorá bola špecifikovaná ako lokálna premenná, pretože premenná bude okamžite odstránená (uvoľnená), keď sa funkcia skončí, čím sa stane nedostupnou a spustí sa varovanie, ako je uvedené nižšie:

#include

const char myName ( ) {
názov znaku = 'John' ;
vrátiť názov;
}

int main ( neplatné ) {
printf ( '%s' , moje meno ( ) ) ;
}

V tomto kóde a POZOR spustí sa pri vrátení reťazca bez akýkoľvek ukazovateľ.

Výkon


Takže kód môžete napísať nasledujúcim spôsobom:

#include

const char * moje meno ( ) {
char * meno = 'John' ;
vrátiť názov;
}
int main ( neplatné ) {
printf ( '%s' , moje meno ( ) ) ;
}

Výkon


Premenné sú štandardne alokované v zásobníku, čo je skutočný dôvod vyššie uvedeného vyhlásenia. Keď je však deklarovaný ukazovateľ, hodnota, na ktorú ukazuje, sa pridelí na hromadu, ktorá sa po dokončení funkcie nevymaže. Po pridelení pamäte sa vytvorí kópia súboru reťazec musí byť vytvorený z pôvodného miesta v pamäti, na ktoré ukazuje ukazovateľ, a kópia musí byť vrátená z volanej funkcie. Volajúca funkcia potom bude mať kontrolu nad pôvodnými údajmi reťazca, zatiaľ čo volaná funkcia je zodpovedná za uvoľnenie prideleného priestoru.

Záver

Funkcia C môže smerovať na reťazec ako argument a vrátiť reťazec hodnotu ako výsledok operácií vykonaných v rámci volanej funkcie. Prístup, ako to dosiahnuť, je použitie ukazovateľa char*. Funkcia volania bude zodpovedná za pamäť pridelenú na uloženie reťazec , pričom volaná funkcia je zodpovedná za uvoľnenie prideleného priestoru.