Retornando string de uma função C

Retornando string de uma função C

A corda é uma sequência de caracteres que consiste em um único caractere ou vários caracteres e é uma estrutura de dados importante na programação de computadores. Ao trabalhar com cordas Em C, certas operações devem ser realizadas no corda Tipo de dados, como inicializar o corda, atribuir conteúdo, concatenando o cordas, comparando cordas, e retornando o corda.

Este artigo se concentra em uma dessas operações no corda estrutura de dados, que está retornando um corda De uma função C.

Retornando string de uma função C

Como corda é uma matriz de caracteres e, para retornar a string de uma função C, um ponteiro para a estrutura de dados da string precisa ser passado como um argumento da função de chamada para a função chamada como um parâmetro. O ponteiro pode ser usado para apontar para uma variedade de personagens. Uma vez que o ponteiro aponta para uma variedade de personagens, o corda O valor pode ser retornado da função chamada usando a instrução de retorno.

Você pode olhar para o exemplo abaixo para um melhor entendimento.

#incluir
const char* myName ()
retornar "John";

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

No código acima, em vez de declarar a variável como fazemos normalmente, usamos um ponteiro com ele para que, quando retornamos essa string, nenhum erro ocorra.

Saída


Uma função C não pode retornar um corda Isso foi especificado como uma variável local, pois a variável será removida imediatamente (liberada) quando a função terminar de funcionar, tornando -a indisponível e desencadeando um aviso como abaixo:

#incluir
const char myname ()
Char name = "John";
Nome de retorno;

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

Neste código, um aviso é desencadeado quando a string está sendo devolvida sem qualquer ponteiro.

Saída


Então, você pode escrever o código da seguinte maneira:

#incluir
const char* myName ()
char *name = "John";
Nome de retorno;

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

Saída


Variáveis ​​são alocadas na pilha por padrão, que é a razão real da declaração acima. No entanto, quando um ponteiro é declarado, o valor que aponta para ser alocado na pilha, que não é liberado após a conclusão da função terminar. Depois que a memória é alocada, uma cópia do corda precisa ser criado a partir do local original da memória apontado pelo ponteiro e a cópia precisa ser devolvida da função chamada. A função de chamada terá controle sobre os dados originais da string, enquanto a função chamada é responsável por liberar o espaço alocado.

Conclusão

Uma função C pode levar um ponteiro para corda como argumento e devolver o corda valor como resultado das operações realizadas dentro da função chamada. A abordagem para conseguir isso é usar um ponteiro de char*. A função de chamada será responsável pela memória alocada para armazenar o corda, Enquanto a função chamada é responsável por libertar o espaço alocado.