Returnerende streng fra en C -funksjon

Returnerende streng fra en C -funksjon

EN streng er en sekvens av tegn som består av enten et enkelt tegn, eller flere tegn og er en viktig datastruktur i dataprogrammering. Når du jobber med strenger I C er det pålagt visse operasjoner for å bli utført på streng datatype som initialisering av streng, tilordne innhold, sammenføyning av strenger, sammenligne strenger, og returnerer streng.

Denne artikkelen fokuserer på en slik operasjon i streng datastruktur, som returnerer en streng Fra en C -funksjon.

Returnerende streng fra en C -funksjon

Som streng er en rekke tegn og for å returnere streng fra en C -funksjon, må en peker til strengdatastrukturen sendes som et argument fra anropsfunksjonen til den kalt funksjonen som en parameter. Pekeren kan deretter brukes til å peke på en rekke tegn. Når pekeren peker på en rekke tegn, er streng Verdien kan returneres fra den kalte funksjonen ved hjelp av returerklæringen.

Du kan se på det undergitte eksemplet for bedre forståelse.

#inkludere
const char* myName ()
Returner "John";

int main (void)
printf ("%s", myName ());

I koden ovenfor, i stedet for å erklære variabelen som vi gjør normalt, brukte vi en peker med den slik at når vi returnerer denne strengen, oppstår ingen feil.

Produksjon


En C -funksjon kan ikke returnere en streng Dette har blitt spesifisert som en lokal variabel siden variabelen umiddelbart blir fjernet (utgitt) når funksjonen er ferdig med å løpe, noe som gjør den utilgjengelig og utløser en advarsel som nedenfor:

#inkludere
const char myname ()
char name = "John";
Returnavn;

int main (void)
printf ("%s", myName ());

I denne koden, a advarsel utløses når streng blir returnert uten Enhver peker.

Produksjon


Så du kan skrive koden på følgende måte:

#inkludere
const char* myName ()
char *name = "John";
Returnavn;

int main (void)
printf ("%s", myName ());

Produksjon


Variabler er tildelt på stabelen som standard, noe som er den faktiske grunnen til uttalelsen ovenfor. Når en peker blir erklært, blir imidlertid verdien den peker til bevilget på haugen, som ikke er fjernet etter at funksjonen er ferdig. Når minnet er tildelt, en kopi av streng må opprettes fra den opprinnelige minnested. Ringfunksjonen vil da ha kontroll over de originale strengdataene, mens den kalte funksjonen er ansvarlig for å frigjøre det tildelte rommet.

Konklusjon

En C -funksjon kan ta en peker til streng som argument og returnerer streng Verdi som et resultat av operasjonene som utføres innen den kalte funksjonen. Tilnærmingen for å oppnå dette er å bruke en peker av røye*. Anropsfunksjonen vil være ansvarlig for minnet som er tildelt for å lagre streng, Mens den kalte funksjonen er ansvarlig for å frigjøre det tildelte rommet.