Zwracanie ciągu z funkcji C

Zwracanie ciągu z funkcji C

A strunowy jest sekwencją 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 konieczne należy wykonywać pewne operacje strunowy Typ danych, taki jak inicjowanie strunowy, przypisanie treści, połączenie smyczki, Porównanie smyczki, i powrót strunowy.

Ten artykuł koncentruje się na jednej takiej operacji w strunowy Struktura danych, która zwraca strunowy Z funkcji C.

Zwracanie ciągu z funkcji C

Jak strunowy jest tablicą znaków i zwracając ciąg z funkcji C, wskaźnik do struktury danych ciągów musi być przekazywany jako argument z funkcji wywołania do wywołanej funkcji jako parametr. Wskaźnik można następnie użyć do wskazania szeregu znaków. Gdy wskaźnik wskazuje na szereg postaci, strunowy Wartość można zwrócić z funkcji wywołanej za pomocą instrukcji powrotu.

Możesz spojrzeć na podany przykład, aby uzyskać lepsze zrozumienie.

#włączać
const char* myname ()
zwrócić „John”;

int main (void)
printf („%s”, myname ());

W powyższym kodzie, zamiast deklarować zmienną, tak jak 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ć strunowy To zostało określone jako zmienna lokalna, ponieważ zmienna zostanie natychmiast usunięta (zwolniona) po zakończeniu funkcji, czyniąc ją niedostępną i wyzwalając ostrzeżenie jak poniżej:

#włączać
const char myname ()
Char Name = "John";
Nazwa powrotu;

int main (void)
printf („%s”, myname ());

W tym kodzie a ostrzeżenie jest wyzwalany jako zwracany ciąg bez dowolny wskaźnik.

Wyjście


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

#włączać
const char* myname ()
char *name = "John";
Nazwa powrotu;

int main (void)
printf („%s”, myname ());

Wyjście


Zmienne są domyślnie przydzielane na stosie, co jest faktycznym przyczyną powyższego stwierdzenia. Jednak gdy wskaźnik jest zadeklarowany, wartość, którą wskazuje, jest przydzielona na stercie, która nie jest wyczyszczona po zakończeniu funkcji. Po przydzieleniu pamięci kopia strunowy Należy utworzyć z oryginalnej lokalizacji pamięci wskazanej przez wskaźnik, a kopia musi zostać zwrócona z wywoływanej funkcji. Funkcja wywołania będzie miała kontrolę nad oryginalnymi danymi łańcuchowymi, podczas gdy funkcja wywołana jest odpowiedzialna za zwolnienie przydzielonej przestrzeni.

Wniosek

Funkcja C może przyjąć wskaźnik strunowy jako argument i zwróć strunowy wartość w wyniku operacji przeprowadzonych w ramach nazywanej funkcji. Podejście do osiągnięcia tego jest używanie wskaźnika char*. Funkcja wywołania będzie odpowiedzialna za pamięć przydzieloną do przechowywania strunowy, podczas gdy funkcja wywoływana jest odpowiedzialna za uwolnienie przydzielonej przestrzeni.