Jump to content
Fórum Script Brasil
  • 0

Explique-me o Main - Resolvido


Henzel

Question

Pessoal, umas coisas ainda não estão claras em minha cabeça, estou lendo dois livros de c mas eles não explicaram direito sobre o comando VOID que é colocado antes do MAIN e dentro do parentese do mesmo..

void main (void)

não entendo a razão dele, está escrito que é para retornar 0, como assim???? xx

e já vi programas sem void nem int antes do main..

main()

{..}

então qual é a utilidade do void?

e qual é a utilidade de colocar variaveis dentro do parentese main(int var1, int var2), esses parametros, qual a diferença de coloca-los dentro do parentese?

Obrigado, e desculpe ai, é que estou aprendendo sozinho, e pensei que o livro iria explicar mais até agora não retornou no assunto --'...

Edited by Henzel
Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Henzel,

na vdd void significa "vazio", "nada"... A presença dele é opcional.

Escrever void main (void) é a mesma coisa que escrever main(void), que é o mesmo que void main(), que é igual a main()... Dá tudo na mesma. A notação está lá mais por boa prática de programação. É a mesma linha de escrever apenas "return;" numa função que retorna void...

O void antes do nome de uma função significa que essa função não retorna nada. No caso da main que você viu com o void antes mas retornando 0, pode ser que esse código tenha sido escrito num ambiente que o processo precise retornar algo, Linux por exemplo (retorna 0 caso não haja erro e outro número caso haja).

Sobre os parâmetros da função main, ela só pode receber nenhum (main(void) ou simplesmente main()) ou 2 parâmetros. É padrão que esses argumentos, quando existem, sejam (int argc, char *argv[]). É que quando você chama o programa (mais comumente por linha de comando no Terminal do Linux ou no Prompt do DOS) você pode passar um ou mais argumentos para o programa. Por exemplo:

//codigo.c
#include <stdio.h>

int main (int argc, char *argv[]) {
    printf("Meu primeiro argumento foi: %s\n", argv[1]);
    return 0;
}

Se você compilar esse código e chamá-lo através do terminal:

$./codigo argumento1

Ou ainda no windows:

>codigo.exe argumento1

Na tela aparecerá:

Meu primeiro argumento foi: argumento1

Os argumentos da main são os argumentos que você passa para o programa ao executá-lo.

Observações:

1 - argc contará sempre o total de argumentos que foram passados

2 - argv[0] é sempre o nome do programa; os argumentos começam a contar mesmo a partir de argv[1], argv[2], ..., argv[n]

Edited by tucano
Link to comment
Share on other sites

  • 0

main() é a função principal. É aquela chamada quando o programa é iniciado. Por default, ela retorna um inteiro, portanto, quando você vê uma declaração do tipo

main(){
É o mesmo que
int main(){
Declarar a função main() como void não é uma boa prática de programação (ao menos pelo que me foi ensinado). Sobre o que é void... void é um dos tipos do C. É um tipo 'vazio'. Ou seja, se você pretende fazer uma função que não retorne nada, deve declará-la como 'void'. Se não quiser passar nenhum argumento para ela, coloque 'void' entre os parênteses (embora a maioria coloque os parênteses vazios mesmo).
e qual é a utilidade de colocar variaveis dentro do parentese main(int var1, int var2), esses parametros, qual a diferença de coloca-los dentro do parentese?
main() pode receber dois parâmetros. Segue o protótipo:
int main(int argc, char *argv[])
O primeiro é um inteiro, que representa a quantidade de argumentos passados pela linha de comando. O segundo é um vetor que possui tais parâmetros. Para rodar um programa passando argumentos pela linha de comando, basta digitar tais argumentos após o local do arquivo. Exemplo:
C:\programa.exe -argumento1 -argumento2
Então, de forma resumida, a declaração de uma função é feita da seguinte maneira:
tipo_do_retorno_da_função nomeDaFunção(tipo variavel1, tipo variavel2, tipo variavel3);

Obviamente os parâmetros passados mudam de acordo com a necessidade.

Edit: tucano respondeu antes =/

Edited by mJi
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...