Ir para conteúdo
Fórum Script Brasil
  • 0

Declarar Variaveis Dentro Do Main()


julio tanaka

Pergunta

Prezadas Sras/Srs

O que acontece se eu declarar as variaveis dentro do main(); tudo isso a nivel de memoria, pois os enderecos "&" de a,b,c, serao diferentes (comparando os 2 caso abaixo); alem de o registrador "ecx" no primeiro caso ficar = 0, e no segundo ficaria "3" que e a qtde das variaveis

Caso 1

int main(int a, int b, int c)

{ .

.

.

.

return 0;

}

AO invés DE:

Caso 2

int main()

{ int a,b,c;

.

.

.

.

return 0;

}

Obrigado pela atencao

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

opa...

Tipo que há uma diferença ao declarar uma variável com o "&" e uma variável normal, ou seja, quando você declara uma variável com o "&" em uma função, a variável da função main fará referencia ao mesmo endereço de memória.

Ex:

int soma(int &a){
int b=2;

a+=b;

return a

}

int main(){
int x=5;
soma(x);  //chamando a função soma
printf("%i",x);
return 0;

}

Neste exemplo a saida do programa será 7 pois a variável "x" fez referencia ao mesmo endereço de memória da variável "a". Assim a variavel "a" assumiu o valor de "x."

Não sei se expliquei direito... Mais é + ow - isso ai!

Link para o comentário
Compartilhar em outros sites

  • 0

Ola beleza, obrigado por terem respondido.

Eu entendo que vc. citou; quando se cria uma funcao por "referencia" e passado o endereco da variavel p/ a funcao ( mov, [ebp-x] ) e o vlr inicial da variavel e alterado apos chamar a funcao, p/ certificar e so imprimir o vlr. da variavel apos chamar a funcao.

E quando criamos funcao por "valor", somente e passado o vlr. p/ uma variavel "hospede"( mov, dword[ebp-x] ) e não alterando o vlr. da variavel, apos chamar a funcao; p/ certificar e so imprimir o vlr. da variavel apos chamar a funcao.

A minha duvida e saber a diferenca entre:

-Declarar variaveis "dentro" do main

int main ( int a, int b, int c)

{

.

.

.

return 0;

}

-Declarar variaveis "fora" do main

int main ( )

{

int a, int b, int c

.

.

.

return 0;

}

Obrigado pela atencao

Link para o comentário
Compartilhar em outros sites

  • 0

Na verdade não se costuma declarar váriaveis no main(), a não ser que você queira passar parametros para seu programa a partir da linha de comando.Mesmo assim deve-se ter um critério, que pode ser + ou - assim:

void main(int argc,char **argv)

Onde int argc recebe a quantidade de parametros passados, sendo que o próprio nome do executável é o primeiro parametro, e char argv é um array de ponteiro onde esta armazenado todos os parâmetros passados para a função.

Declarar variaveis no main como você esta sugerindo não tem sentido.

Se fosse o caso, declarar as váriaveis como parametro de uma função ou dentro da função, desde que do mesmo tipo, vão ocupar o mesmo tamanho na memória.Ou seja um "int" tem o tamanho de um "int" em qualquer lugar do seu programa.

Passagem por valor ou referencia em uma outra função criada por vc, dai sim são completamente diferentes

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...