Zwracanie ciągu znaków z funkcji C

Zwracanie Ciagu Znakow Z Funkcji C



A strunowy to sekwencja znaków, która składa się z jednego znaku lub wielu znaków i jest ważną strukturą danych w programowaniu komputerowym. Podczas pracy z smyczki w C wymagane jest wykonanie pewnych operacji na pliku strunowy typ danych, taki jak inicjowanie pliku strunowy , przypisywanie treści, łączenie smyczki , porównując smyczki , i zwracanie strunowy .

Ten artykuł skupia się na jednej takiej operacji w strunowy struktura danych, która zwraca a strunowy z funkcji C.







Zwracanie ciągu znaków z funkcji C

Jak strunowy jest tablicą znaków i aby zwrócić ciąg znaków z funkcji C, wskaźnik do struktury danych łańcucha musi zostać przekazany jako argument z funkcji wywołującej do wywoływanej funkcji jako parametr. Wskaźnik może być następnie użyty do wskazania tablicy znaków. Gdy wskaźnik wskaże tablicę znaków, strunowy wartość może zostać zwrócona z wywołanej funkcji za pomocą instrukcji return.



Możesz spojrzeć na poniższy przykład dla lepszego zrozumienia.



#include

stały znak * moje imię ( ) {
powrót 'Jan' ;
}

int główny ( próżnia ) {
drukujf ( '%S' , moje imię ( ) ) ;
}





W powyższym kodzie, zamiast zadeklarować zmienną, tak jak robimy to normalnie, użyliśmy z nią wskaźnika, aby po zwróceniu tego ciągu nie wystąpił błąd.

Wyjście




Funkcja C nie może zwrócić a strunowy która została określona jako zmienna lokalna, ponieważ zmienna zostanie natychmiast usunięta (zwolniona) po zakończeniu działania funkcji, co spowoduje jej niedostępność i wyzwolenie ostrzeżenia, jak poniżej:

#include

const char moje imię ( ) {
nazwa znaku = 'Jan' ;
powrót nazwa;
}

int główny ( próżnia ) {
drukujf ( '%S' , moje imię ( ) ) ;
}

W tym kodzie A ostrzeżenie jest wyzwalany, gdy zwracany jest ciąg znaków bez dowolny wskaźnik.

Wyjście


Możesz więc napisać kod w następujący sposób:

#include

stały znak * moje imię ( ) {
zwęglać * imię = 'Jan' ;
powrót nazwa;
}
int główny ( próżnia ) {
drukujf ( '%S' , moje imię ( ) ) ;
}

Wyjście


Zmienne są domyślnie przydzielane na stosie, co jest faktycznym powodem powyższego stwierdzenia. Jednak po zadeklarowaniu wskaźnika wartość, na którą wskazuje, zostaje przydzielona na stercie, która nie jest czyszczona po zakończeniu funkcji. Po przydzieleniu pamięci kopia pliku strunowy musi zostać utworzony z pierwotnej lokalizacji pamięci wskazanej przez wskaźnik, a kopia musi zostać zwrócona z wywołanej funkcji. Funkcja wywołująca będzie wtedy miała kontrolę nad oryginalnymi danymi ciągu, podczas gdy wywoływana funkcja będzie odpowiedzialna za zwolnienie przydzielonej przestrzeni.

Wniosek

Funkcja C może przyjąć wskaźnik do strunowy jako argument i zwróć strunowy wartość w wyniku operacji wykonanych w ramach wywoływanej funkcji. Podejście do osiągnięcia tego polega na użyciu wskaźnika char*. Funkcja wywołująca będzie odpowiedzialna za pamięć przydzieloną do przechowywania strunowy , natomiast wywołana funkcja odpowiada za zwolnienie przydzielonej przestrzeni.