Type casting se refere ao ato de alterar uma variável de um tipo de dado para outro. O compilador irá automaticamente trocar um tipo de dado em outro se fizer sentido. Por exemplo, se você atribuir um valor integer para uma variável ponto flutuante (floating-point), o compilador irá converter o int para float. Casting permite que você faça essa conversão explicitamente, ou forçar quando isso não acontece normalmente.
A conversão em c pode ser classificadas em dois tipos.
Conversão implícita
É também conhecida como ‘conversão do tipo automático‘.
- Feita pelo compilador, sem intervenção externa do usuário.
- Geralmente acontece quando uma expressão maior que um tipo de dado está presente. Nessa condição, a conversão de tipo acontece para perder dados.
- Todos os tipos de dados das variáveis são promovidos para o tipo de da variável com o maior tipo de dado.

É possível a perda de informação em conversões implícitas, sinais podem ser perdidos (quando signed é implicitamente convertido para unsigned), e pode ocorrer overflow (quando long long é implicitamente convertido para float).
Exemplo
// Exemplo de conversão implícita
#include<stdio.h>
int main()
{
int x = 10; // inteiro x
char y = 'a'; // caractere c
// y é implicitamente convertido para int (ASCII)
// valor do 'a' é 97
x = x + y;
// x é implicitamente convertido para float
float z = x + 1.0;
printf("x = %d, z = %f", x, z); //x = 107, z = 108.000000
return 0;
}
Conversão Explícita
O tipo de conversão realizado pelo programador posicionando o tipo de dado da expressão de tipo especifico é conhecido como conversão do tipo explícito. A sintaxe é:
(tipo_de_dado)expressão
Exemplo:
float f;
int a = 20, b = 3;
f = a/b;
O resultado de f será 6.000000 ao invés de 6.6666666 porque a operação entre dois inteiros resulta num valor inteiro. Se escrevermos f = (float)a/b o resultado será 6.6666666.
O type casting funciona da seguinte forma: primeiro, ele converte a variável ‘a’ do tipo int para o tipo float temporariamente. E como o resultado da operação entre um float e um int é do tipo float, a resposta fica 6.666666 ao invés de 6.000000.
O operador cast somente se aplica a variável ‘a’, não a b nem a/b.
Um outro ponto importante é que o tipo da variável ‘a’ é float somente na execução do comando. Depois disso, ‘a’ será tratado como int.
Nota: Em f = (float)(a/b), primeiro a expressão a/b será feita, para então converter o resultado e float. Nesse caso o resultado seria 6.00.
No libft
Type casting será muito usado devido muitas funções receberem um parâmetro do tipo const char sendo que o retorno deverá ser apenas um char.
Referências
https://www.geeksforgeeks.org/type-conversion-c/
https://developerinsider.co/type-casting-c-programming/
Explicit Type Conversion in C