Valor da variavel muda na função principal

3 respostas
c
P

Pessoal, nao estou conseguindo responder a essa questao, poderiam me ajudar por favor, muito obrigado pela atencao

O valor de x na função param do Código 3 foi alterado, explique porque este
valor foi alterado na função principal.

#include<stdio.h>

#include<stdlib.h>

int x;

int param( ){

x = x + 10;

return x;

}

int main(){

int y;

printf(“Digite um numero: );

scanf(” %d”, &x);

y = param();

printf("\nO valor de y e %d \n", y);

printf("\nO valor de x e %d \n", x);

system(“pause”);

}

3 Respostas

J

Uma dica, você deve formatar o código:


Porque x é uma variável global, logo ela pode ser usada e alterada por toda parte do programa. Diferente da variável y que foi declarada dentro da função main e que só pode ser usada na mesma, ou seja, ela possuí um escopo limitado. Nessa ocasião, y é uma variável local.

P

Opa Jelson, obrigado pela resposta, então a variável global se caracteriza por estar acima da funcao principal, certo? Quando coloco uma variável pra receber o parâmetro, por exemplo, na função principal quando eu declaro a função int param(x), e aí eu chamo a função e coloco o parâmetro (int x) na função int param(int x), o x não muda o valor na função principal, por que acontece isso? Agora quando eu deixo a função vazia, sem receber parâmetro, tipo int param(), a variável x vira global, não entendi isso… poderia me explicar? Obrigado!

J

Eu não diria acima da função principal, mas sim, aquela variável que não tem seu escopo limitado, ou seja, ela pode ser acessada por outros métodos, funções, etc.

No exemplo abaixo a variável y tem seu escopo limitado, ela só existe dentro da função teste(). Logo ela é uma variável local.

void teste() {
    int y = 10;
}

Falo isso, porque em outras linguagens você pode criar variáveis globais depois da função principal, ou até mesmo durante o programa.


Você tá falando assim:

#include<stdio.h>
#include<stdlib.h>

int x;

int param(int x){
    x = x + 10;
    return x;
}

int main(){
    int y;
    
    printf("Digite um numero: ");
    scanf(" %d", &x);
    
    y = param(x);
    
    printf("\nO valor de y e %d \n", y);
    printf("\nO valor de x e %d \n", x);
    
    system("pause");
}

Nesse caso o x é um parâmetro para a função param(int x), que não deixa de ser uma variável local dessa função. E quando você declarar uma variável local com o mesmo nome que a variável global a função dará preferência a variável local.

É por isso que o valor da variável x (global) permanece inalterada.


Se quiser saber mais tem esse artigos aqui:
https://www.pucsp.br/~so-comp/cursoc/aulas/c760.html#:~:text=Quando%20uma%20função%20tem%20uma,%3B%20func1%20(...)

Criado 6 de fevereiro de 2021
Ultima resposta 6 de fev. de 2021
Respostas 3
Participantes 2