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?
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?
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.