Stringa di ritorno da una funzione C

Stringa di ritorno da una funzione C

UN corda è una sequenza di caratteri che consiste in un singolo carattere o più caratteri ed è un'importante struttura di dati nella programmazione del computer. Quando si lavora con stringhe In C, alcune operazioni devono essere eseguite su corda Tipo di dati come inizializzare il corda, Assegnare il contenuto, concatenando il stringhe, confronto stringhe, e restituire il corda.

Questo articolo si concentra su una di queste operazioni in corda Struttura dei dati, che sta restituendo a corda Da una funzione C.

Stringa di ritorno da una funzione C

COME corda è un array di caratteri e per restituire la stringa da una funzione C, un puntatore alla struttura dei dati della stringa deve essere passato come argomento dalla funzione chiamante alla funzione chiamata come parametro. Il puntatore può quindi essere usato per indicare una serie di caratteri. Una volta che il puntatore punta a un array di caratteri, il corda Il valore può essere restituito dalla funzione chiamata usando l'istruzione di ritorno.

Puoi guardare l'esempio di seguito per una migliore comprensione.

#includere
const char* myname ()
restituire "John";

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

Nel codice sopra, invece di dichiarare la variabile come facciamo normalmente, abbiamo usato un puntatore con esso in modo che quando restituiamo questa stringa, non si verifica alcun errore.

Produzione


Una funzione C non può restituire un file corda che è stato specificato come una variabile locale poiché la variabile verrà immediatamente rimossa (rilasciata) quando la funzione ha terminato in esecuzione, rendendola non disponibile e attivando un avviso di seguito:

#includere
const char myname ()
char name = "John";
Nome di ritorno;

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

In questo codice, a avvertimento viene attivato quando la stringa viene restituita senza qualsiasi puntatore.

Produzione


Quindi, puoi scrivere il codice nel modo seguente:

#includere
const char* myname ()
char *name = "John";
Nome di ritorno;

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

Produzione


Le variabili sono allocate sullo stack per impostazione predefinita, che è la ragione effettiva per l'istruzione sopra. Tuttavia, quando viene dichiarato un puntatore, il valore che indica viene assegnato sul mucchio, che non viene cancellato dopo che la funzione è terminata. Una volta allocata la memoria, una copia del corda deve essere creato dalla posizione di memoria originale puntata dal puntatore e la copia deve essere restituita dalla funzione chiamata. La funzione chiamante avrà quindi il controllo sui dati della stringa originale, mentre la funzione chiamata è responsabile della liberazione dello spazio allocato.

Conclusione

Una funzione C può prendere un puntatore a corda come argomento e restituire il corda valore a seguito delle operazioni effettuate all'interno della funzione chiamata. L'approccio per raggiungere questo obiettivo sta usando un puntatore di char*. La funzione chiamante sarà responsabile della memoria assegnata per archiviare il corda, Mentre la funzione chiamata è responsabile della liberazione dello spazio assegnato.