1
resposta

Dúvida quanto a invocação de funções

Olá, boa tarde. Me ocorreu uma dúvida quanto as invocações de funções em C. Todas precisam ser invocadas dentro do main()? Ou eu posso chamar uma função dentro de outra como ocorre em outras linguagens? Existe essa possibilidade?

1 resposta

Olá, boa tarde!

Você pode sim tanto declarar variáveis quanto chamar funções dentro de outras funções e inclusive outros arquivos. Só é preciso lembrar de manter o header com os protótipos organizados ou coloca-las dispostas em uma ordem que o programa consiga reconhecer todas as funções (lembrando que ele lê de cima para baixo).

Exemplo :

# include <stdlib.h>

void    *ft_memset(void *s, int c, size_t n)
{
    unsigned char    *aux_s;

    aux_s = (unsigned char *)s;
    while (n--)
    {
        *aux_s = (unsigned char)c;
        aux_s++;
    }
    return (s);
}

void    *ft_calloc(size_t nmemb, size_t size)
{
    int        over_handling;
    void    *result;

    over_handling = nmemb * size;
    if (nmemb != 0 && over_handling / nmemb != size)
        return (NULL);
    if (nmemb == 0 || size == 0)
        return (NULL);
    result = malloc(nmemb * size);
    ft_memset(result, 0, (nmemb * size));
    return (result);
}

int   main(void)
{
    char   *cavalinho;

    cavalinho = ft_calloc(9 * sizeof(char));
}

Nesse exemplo a main apenas chama a função calloc, mas a ft_calloc para funcionar precisa da malloc e da ft_memset.