Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

sarcofagobra

Função main ()

Recommended Posts

O que significa esses argc e char* argv abaixo?

 

int main(int argc, char *argv[])

 

e quando uso main desse jeito? e pra que servem?

 

int main (void)

void main(void)

main (void)

main ()

 

O que é void?

existem outras maneiras de inicializar a função main?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei onde você viu o void main, mas se alguém te ensinou assim ou você leu em algum livro, já está começando errado.

Char * significa "ponteiro p/ char" (ou uma string), argc é "argument count". E ainda tem o envp.

Normalmente você vê isso depois de se habituar com tipos da linguagem, controle de fluxo, funções e ponteiros, então se você está começando, pegue um bom livro (livro atualizado e não apostila) e não pule capítulos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

As maneiras portáveis de se declarar a main são, atualmente:

 

int main(void);
int main(char **argv, int argc);
int main(char *argv[], int argc);

 

Ou maneiras equivalentes (através de typedefs).

 

O padrão da linguagem ainda diz que a main pode ser declarada "de alguma forma especificada pela implementação". Em ambientes *nix, é comum ter-se envp, citado pela Isis. Desnecessário dizer que, para garantir que seu programa funcionará em outros sistemas, é preciso usar as maneiras ditas acima.

 

obs: 'void main(void);' é uma maneira adotada por implementações específicas. Ela não é, portanto, "correta" para toda implementação do C.

 

obs(2): note a diferença entre 'int main();' e 'int main(void);'. Se ela não é clara, comece a ler um bom livro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Guidjos, o 'está começando errado' se refere a void main. Deve ter um tópico enorme aqui sobre o porquê do main ter que retornar um inteiro e C99.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isis, o TC3 define main das formas como eu citei. Independente do post que existe aqui no fórum, é 'errado' usar 'void main[...]' porque ele não é especificamente definido no padrão. Código portável deve seguir as declarações que eu enumerei.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu sei como ele define o main. Simplesmente comentei o main com void de retorno.

Compartilhar este post


Link para o post
Compartilhar em outros sites
obs(2): note a diferença entre 'int main();' e 'int main(void);'. Se ela não é clara, comece a ler um bom livro.

 

Olha guidjos poderia me explicar essa obs(2), ou então me indicar algum lugar que esclareça?!

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sem problema, quit. Uma função em cuja declaração a lista de parâmetros contém somente 'void' não pode ser chamada com argumento nenhum. O caso é restritivo e específico. Se nada for especificado, 'nada foi especificado' - uma implementação pode simplesmente definir uma lista de parâmetros.

 

Portanto, o seguinte código é correto:

 

int teste(); // protótipo / declaração

//...

int teste(int a, float B)
{
  // código da função
  return 0;
}

//...

 

E o seguinte código é incorreto:

 

int teste(void); // protótipo / declaração

//...

int teste(int a, float B) // errado: não pode ser implementada com parâmetros
{
  // código da função
  return 0;
}

//...

 

Isso é em C. Não sei o que o C++ diz sobre isso, mas se não me engano () e (void) são equivalentes.

 

Na prática, considera-se 'boa prática' declarar 'int main(void)' ao invés de 'int main()', mas geralmente não há consequências sérias do uso menos formal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum... vlw entendi..

depois vo testar em C++ ou até msm em Java para ver o comportamento..

 

+ muito obrigado, sempre pensei q pra qlqr linguagem isso era "irrelevante" ou seja "tanto faz".

 

:thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.