LordGutts 0 Denunciar post Postado Maio 13, 2016 Olá amigos sou novo no fórum e novo na programação (faculdade). Gostaria que me explicassem a diferença do uso entre: main (), int main (), int main (void), main (void), void main () Meu professor me instruiu a usar main () e a retornar no final dela getchar (). E essa também é outra dúvida que tenho qual a diferença de: return 0, getchar () Gostaria que me explicassem o motivo e o porque, entendo que é um retorno mas empaco nessa parte... Bônus: O que é esta linha está dizendo (não entendo os códigos dentro do parenteses). int main(int argc, char* argv[]) Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 13, 2016 Padrão C99: int mainNa internet você encontra um monte de respostas.http://stackoverflow.com/questions/204476/what-should-main-return-in-c-and-c Compartilhar este post Link para o post Compartilhar em outros sites
freak1Day 1 Denunciar post Postado Maio 14, 2016 int main é praticamente uma função, quando você utiliza int main(void) quer dizer que você não esta recebendo nenhum argumento, porem se você usar int main(int argc, char* argv[]), voce recebera argumentos do tipo array de char * e o argc sera o contador de quantos strings existe nesse argv[]. Mas de onde vem esses argumentos? Simples, esses argumento são inseridos quando iniciamos o programa, no caso você vai no cmd ou no atalho do programa e coloca: nomedoprograma.exe argumento1 argumento2 argumento3 etc. Como usar esses argumentos no programa? Você mesmo pode criar um teste, crie a função main assim: int main(int argc, char* argv[]){ //verificar se recebemos argumentos if(argc < 1){ printf("Nao recebemos nenhum argumento!\n"); return 0; } //Mostrar os argumentos int a; for(a = 0; a < argc; a++) printf("Argumento: %s\n",argv[a]); getchar(); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
saulod2 1 Denunciar post Postado Maio 16, 2016 Seu professor recomendou retornar getchar(), porém acho meio danoso você continuar fazendo isso.Como foi comentado anteriormente, o main deverá retornar alguma coisa à aplicação chamadora, que normalmente é seu shell (bash, cmd etc). Se você retorna getchar() o que está acontecendo é que você estará retornando o inteiro sem sinal equivalente do caractere obtido pela entrada padrão (teclado, por ex.). Daí, vejamos, se você digita um 'A', seu main() retorna 65, se digita aperta ENTER sem nada, retorna 10. Para a aplicação chamadora é como se fosse que o seu programa foi executado porém com algum erro, já que na maioria do sistemas operacionais, um retorno diferente de zero significa que houve algum erro.Então o correto é você retornar 0 ou mesmo a constante EXIT_SUCCESS declarado em <stdlib.h>.Outra coisa, se você está usando C, quando você não declara o tipo de retorno no main(), o própriocompilador redeclara internamente como int main. Porém, o certo ao meu ver, é sempre declarar o main()com int mesmo e nunca sem nada.Sobre os parâmetros outra coisa:Novamente, se estiver usando C.Se você declara uma função f qualquer sem parâmetros (até mesmo sem void), você poderá chamá-lade qualquer forma que o compilador não fará nenhuma acusação de erro. Exemplo: char f() { // escopo de f } //... f("string-qualquer", 10); f(205, -150); f('a','e','i','o','u'); f(); Agora se você declara outra função g qualquer que não recebe parâmetros, apenas com o void, o compilador sempre acusará erro se você chamá-la com qualquer quantidade de parâmetros. Assim, g('a') ou g(10, 'a') é erro de compilação. Compartilhar este post Link para o post Compartilhar em outros sites