Vrácení řetězce z funkce C

Vraceni Retezce Z Funkce C



A tětiva je posloupnost znaků, která se skládá buď z jednoho znaku, nebo z více znaků a je důležitou datovou strukturou v počítačovém programování. Při práci s struny v C je nutné provést určité operace na tětiva datový typ, jako je inicializace tětiva , přiřazení obsahu, zřetězení struny , srovnávání struny a vrácením tětiva .

Tento článek se zaměřuje na jednu takovou operaci v tětiva datová struktura, která vrací a tětiva z funkce C.







Vrácení řetězce z funkce C

Tak jako tětiva je pole znaků a pro vrácení řetězce z funkce C je třeba předat ukazatel na datovou strukturu řetězce jako argument z volající funkce volané funkci jako parametr. Ukazatel pak lze použít k ukázání na pole znaků. Jakmile ukazatel ukazuje na pole znaků, tětiva hodnotu lze vrátit z volané funkce pomocí příkazu return.



Pro lepší pochopení se můžete podívat na níže uvedený příklad.



#include

konst char * moje jméno ( ) {
vrátit se 'John' ;
}

int main ( prázdnota ) {
printf ( '%s' , moje jméno ( ) ) ;
}





Ve výše uvedeném kódu jsme místo toho, abychom proměnnou deklarovali jako obvykle, použili s ní ukazatel, takže když vrátíme tento řetězec, nedojde k chybě.

Výstup




Funkce C nemůže vrátit a tětiva která byla zadána jako lokální proměnná, protože proměnná bude okamžitě odstraněna (uvolněna), jakmile funkce skončí, čímž se stane nedostupnou a spustí se varování, jak je uvedeno níže:

#include

const char myName ( ) {
název znaku = 'John' ;
vrátit se název;
}

int main ( prázdnota ) {
printf ( '%s' , moje jméno ( ) ) ;
}

V tomto kódu a Varování se spouští při vracení řetězce bez jakýkoli ukazatel.

Výstup


Kód tedy můžete napsat následujícím způsobem:

#include

konst char * moje jméno ( ) {
char * jméno = 'John' ;
vrátit se název;
}
int main ( prázdnota ) {
printf ( '%s' , moje jméno ( ) ) ;
}

Výstup


Proměnné jsou standardně alokovány na zásobníku, což je skutečný důvod výše uvedeného prohlášení. Když je však ukazatel deklarován, hodnota, na kterou ukazuje, se alokuje na hromadě, která se po dokončení funkce nevymaže. Jakmile je paměť přidělena, kopie souboru tětiva musí být vytvořen z původního místa v paměti, na které ukazuje ukazatel, a kopie musí být vrácena z volané funkce. Volající funkce pak bude mít kontrolu nad původními daty řetězce, zatímco volaná funkce je zodpovědná za uvolnění přiděleného místa.

Závěr

C funkce může mít ukazatel na tětiva jako argument a vrátit tětiva hodnotu jako výsledek operací prováděných v rámci volané funkce. Přístup, jak toho dosáhnout, je použití ukazatele char*. Volající funkce bude zodpovědná za paměť přidělenou k uložení tětiva , zatímco volaná funkce je zodpovědná za uvolnění přiděleného místa.