Qual é a diferença entre variáveis ​​estáticas locais e globais?


Melhor resposta

global e local: está relacionado ao escopo, ou seja, onde pode ser usado

estático: está relacionado ao tempo e volatilidade, ou seja, por quanto tempo pode ser usado

a variável estática no programa C e C ++ é definida (memória alocada e valor inicial zero) apenas uma vez, até mesmo o controle do programa executa a declaração de declaração novamente. O valor e a vida da variável estática são retidos até o final do programa, mas podem ser usados ​​dentro do escopo.

void staticTest(){

static int i;

printf("\%d\n",i);

i++;

}

void main(){

staticTest();

staticTest();

staticTest();

}

Resultado:

0

1

2

No exemplo acima, é demonstrado o uso da variável estática local.

estática global: você pode declarar a variável estática no escopo global também será quase igual a outra variável global, exceto pelo valor inicial igual a zero, se você não atribuir nenhum valor a ela.

Resposta

Estático local:

  • O valor padrão é zero
  • Armazenado na seção de dados (bss ou inicializado) de memória
  • O escopo ou visibilidade está dentro do bloco ou função
  • A vida da variável estática local começa e só termina com o programa.

Estático global:

  • Se uma variável global for estática, o escopo ou visibilidade está dentro desse arquivo apenas, mesmo usando extern em outro arquivo não funcionará . Ele fornece um erro de ligação.

Exemplo 1:

static int a=20;

void xyz()

{

printf("\%d, ", a);

a = 100;

}

int main()

{

printf("\%d, ", a);

{

static int a = 10;

printf("\%d, \n", a);

xyz();

}

printf("\%d", a);

}

// Output is 20, 10, 20, 100

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *