int main();
Esta é uma declaração simples. Não pode aceitar nenhum argumento de linha de comando.
int main(int argc, char* argv[]);
Esta declaração é usada quando seu programa deve receber argumentos de linha de comando. Quando executado assim:
myprogram arg1 arg2 arg3
argc
, ou Contagem de argumentos, será definido como 4 (quatro argumentos) e argv
, ou Vetores de argumentos, serão preenchidos com ponteiros de seqüência de caracteres para "meuprograma", "arg1", "arg2" e "arg3". A chamada do programa ( myprogram
) está incluída nos argumentos!
Como alternativa, você pode usar:
int main(int argc, char** argv);
Isso também é válido.
Há outro parâmetro que você pode adicionar:
int main (int argc, char *argv[], char *envp[])
O envp
parâmetro também contém variáveis de ambiente. Cada entrada segue este formato:
VARIABLENAME=VariableValue
como isso:
SHELL=/bin/bash
A lista de variáveis de ambiente é terminada por nulo.
IMPORTANTE: NÃO use qualquer argv
ou envp
valores diretamente em chamadas para system()
! Essa é uma enorme falha de segurança, pois usuários mal-intencionados podem definir variáveis de ambiente para comandos da linha de comando e (potencialmente) causar danos enormes. Em geral, apenas não use system()
. Quase sempre há uma solução melhor implementada através das bibliotecas C.