Descrição:

No cabeçalho stdlib.h estão localizadas as funções responsáveis pela manipulação da alocação de memória, e da desalocação também, bem como funções para converter números que estão representados em strings para algum tipo de dado responsável por representar números, como, por exemplo, double, entre outras funcionalidades úteis, como funções de algoritmos de ordenação.

Variáveis:

size_t: tem por finalidade indicar o tamanho, em bytes, que uma variável ocupa na memória.

wchar_t: tem por finalidade representar caracteres com codificação não suportada pelo tipo char, ou seja, caracteres com códigos maiores que aqueles que o tipo char representa.

div_t: struct que contém dois campos do tipo int; um dos campos do struct armazena o resultado da divisão entre dois números e o outro campo armazena o resto da divisão.

ldiv_t: struct que contém dois campos do tipo long int; um dos campos do struct armazena o resultado da divisão entre dois números e o outro campo armazena o resto da divisão.

Macros:

NULL: macro utilizado para indicar que um ponteiro não está apontando para lugar algum da memória.

EXIT_FAILURE: macro utilizado para indicar que um programa foi finalizado de forma inesperada, com erro.

EXIT_SUCCESS: macro utilizado para indicar que um programa foi finalizado conforme o esperado, com sucesso.

RAND_MAX: macro que indica o valor máximo retornado pela função rand().

MB_CUR_MAX: valor máximo de memória que um caractere, que ocupa mais de um byte, pode ter.

Funções:

double atof(const char *stringNum)

RETORNA: o número presente na string convertido para o tipo double.
RECEBE: uma variável que seja um array de caracteres.

int atoi(const char* stringNum)

RETORNA: o número presente na string convertido para o tipo int.
RECEBE: uma string na qual um número esteja sendo representado.

long atol(const char *stringNum)

RETORNA: o número presente na string convertido para o tipo long.
RECEBE: uma string na qual um número esteja sendo representado.

double strtod(const char *stringComNum, char **resto)

RETORNA: o número presente logo no início da string, ou seja, o número que tem como seu dígito mais à esquerda representado pelo primeiro caractere na string, convertido para double.
RECEBE: uma string na qual os primeiros caracteres representam um número, e um ponteiro para o qual irá apontar para o que resta da string sem o número convertido.

long strtol(const char *stringComNum, char **resto, int base)

RETORNA: o número presente logo no início da string, ou seja, o número que tem como seu dígito mais à esquerda representado pelo primeiro caractere na string, convertido para long na base indicada.
RECEBE: uma string na qual os primeiros caracteres representam um número, e um ponteiro para o qual irá apontar para o que resta da string sem o número convertido.

unsigned long strtoul(const char *stringComNum, char **resto, int base)

RETORNA: o número presente logo no início da string, ou seja, o número que tem como seu dígito mais à esquerda representado pelo primeiro caractere na string, convertido para unsigned long na base indicada.
RECEBE: uma string na qual os primeiros caracteres representam um número, e um ponteiro para o qual irá apontar para o que resta da string sem o número convertido.

int rand()

RETORNA: um número do tipo inteiro, não negativo, "aleatório".
RECEBE: não recebe parâmetros.

void srand(int valor)

RETORNA: sem retorno, porque a srand() tem por finalidade configurar um valor inicial a partir do qual uma sequência de números serão aleatorizados, sendo o valor padrão 1.
RECEBE: um número do tipo inteiro.

size_t calloc(size_t quantidadeElementos, size_t tamanhoDoTipo)

RETORNA: o endereço inicial do espaço alocado; aloca espaço na memória de acordo com o tipo indicado em tamanhoDoTipo em blocos, conforme a quantidade de blocos indicada em quantidadeElementos, e inicializa todos os bytes do espaço alocado para 0.
RECEBE: a quantidade de blocos do tipo a ser alocado, em quantidadeElementos, e o tipo (int, float, double, char, etc).

malloc(size_t tamanhoDoTipo)

RETORNA: o endereço inicial do espaço alocado; aloca espaço conforme o valor indicado em tamanhoDoTipo.
RECEBE: a quantidade de memória a ser alocada, comumente indicada por sizeof(int), por exemplo.

realloc(void *ponteiro, size_t tamanhoDoTipo)

RETORNA: um endereço inicial do novo espaço alocado; realoca o espaço de memória para o qual ponteiro aponta, conforme o valor especificado em tamanhoDoTipo.
RECEBE: o ponteiro da variável dinamicamente alocada e a quantia de memória que será reajustada para essa variável.

free(void *ponteiro)

RETORNA: void; free(ponteiro) libera o espaço alocado por calloc, malloc ou realloc para o qual ponteiro aponta.
RECEBE: o ponteiro que aponta para a variável dinamicamente alocada, a qual pretende-se liberar o espaço de memória alocado para esta.

abort()

void; interrompe e aborta a execução do programa no ponto em que abort() é chamada.
RECEBE: não recebe parâmetros.

exit(int status)

RETORNA: o tipo de retorno com o qual pretende-se finalizar a execução do programa.
RECEBE: o status do término da execução do programa e finaliza a sua execução no ponto em que exit(status) é chamada.

atexit(void funcao(void))

RETORNA: um inteiro não nulo caso não seja possível chamar funcao() ao fim da execução do programa, caso contrário, retorna 0.
RECEBE: um procedimento a ser chamado ao fim da execução do programa.

system(const char *comandoSO)

RETORNA: um inteiro não nulo caso não seja possível fazer a requisição da execução da instrução indicada por comandoSO.
RECEBE: um comando a ser executado pelo Sistema Operacional, passado como uma string.

getenv(const char *nomeVariavel)

RETORNA: uma string contendo o caminho para o qual a variável de sistema nomeVariavel aponta.
RECEBE: uma string com o nome de uma variável do Sistema Operacional.

bsearch(const void *chave, const void *array, size_t tamanhoDoArray, size_t tipoDoArray, int (*compara)(const void *, const void *))

RETORNA: o endereço no qual o valor indicado por *chave está localizado; se o valor não estiver em *array, retorna NULL.
RECEBE: uma variável com o valor que se deseja procurar, com passagem por referência, o array no qual será feita a busca, o tamanho do array, o tamanho do tipo que o array armazena, e uma função que efetua a comparação de duas variáveis e retorna um valor inteiro, para fins de comparação, como resultado.

qsort(void *array, size_t tamanhoDoArray, size_t tipoDoArray, int (*compara)(const void*, const void *))

RETORNA: void; a função ordena o array passado como parâmetro em ordem crescente.
RECEBE: o array que será ordenado, o tamanho do array, o tamanho do tipo que o array armazena, e uma função que efetua a comparação de duas variáveis e retorna um valor inteiro, para fins de comparação, como resultado.

abs(int numero)

RETORNA: o módulo do número passado como parâmetro.
RECEBE: um número do tipo inteiro, para o qual deseja-se obter o módulo.

labs(long numero)

RETORNA: um número do tipo long int, para o qual deseja-se obter o módulo.
RECEBE: o módulo do número passado como parâmetro.

div(int numerador, int denominador)

RETORNA: o resultado da divisão numerador/denominador e o resto da divisão armazenados em um struct do tipo div_t.
RECEBE: dois números do tipo inteiro.

ldiv(long numerador, long denominador)

RETORNA: o resultado da divisão numerador/denominador e o resto da divisão armazenados em um struct do tipo ldiv_t.
RECEBE: dois números do tipo long int.