Classe de armazenamento C

Neste tutorial, você aprenderá sobre o escopo e o tempo de vida de variáveis ​​locais e globais. Além disso, você aprenderá sobre variáveis ​​estáticas e de registro.

Cada variável na programação C tem duas propriedades: tipo e classe de armazenamento.

Tipo refere-se ao tipo de dados de uma variável. E a classe de armazenamento determina o escopo, a visibilidade e o tempo de vida de uma variável.

Existem 4 tipos de classe de armazenamento:

  1. automático
  2. externo
  3. estático
  4. registro

Variável Local

As variáveis ​​declaradas dentro de um bloco são variáveis ​​automáticas ou locais. As variáveis ​​locais existem apenas dentro do bloco em que são declaradas.

Vamos dar um exemplo.

 #include int main(void) ( for (int i = 0; i < 5; ++i) ( printf("C programming"); ) // Error: i is not declared at this point printf("%d", i); return 0; )

Ao executar o programa acima, você obterá um identificador não declarado de erro i. É porque i é declarado dentro do forbloco de loop. Fora do bloco, não é declarado.

Vamos dar outro exemplo.

  int main() ( int n1; // n1 is a local variable to main() ) void func() ( int n2; // n2 is a local variable to func() ) 

No exemplo acima, n1 é local para main()e n2 é local para func().

Isso significa que você não pode acessar a variável n1 interna, func()pois ela existe apenas internamente main(). Da mesma forma, você não pode acessar a variável n2 interna, main()pois ela existe apenas internamente func().

Variável Global

Variáveis ​​que são declaradas fora de todas as funções são conhecidas como variáveis ​​externas ou globais. Eles são acessíveis a partir de qualquer função dentro do programa.

Exemplo 1: Variável Global

 #include void display(); int n = 5; // global variable int main() ( ++n; display(); return 0; ) void display() ( ++n; printf("n = %d", n); ) 

Resultado

 n = 7

Suponha que uma variável global seja declarada em file1. Se você tentar usar essa variável em um arquivo diferente file2, o compilador reclamará. Para resolver este problema, a palavra extern- chave é usada file2para indicar que a variável externa está declarada em outro arquivo.

Registrar Variável

A registerpalavra-chave é usada para declarar variáveis ​​de registro. As variáveis ​​de registro deveriam ser mais rápidas do que as variáveis ​​locais.

No entanto, os compiladores modernos são muito bons em otimização de código e há uma chance rara de que o uso de variáveis ​​de registro torne seu programa mais rápido.

A menos que você esteja trabalhando em sistemas embarcados onde saiba como otimizar o código para um determinado aplicativo, não há uso de variáveis ​​de registro.

Variável Estática

Uma variável estática é declarada usando a staticpalavra - chave. Por exemplo;

 static int i;

O valor de uma variável estática persiste até o final do programa.

Exemplo 2: variável estática

 #include void display(); int main() ( display(); display(); ) void display() ( static int c = 1; c += 5; printf("%d ",c); ) 

Resultado

 6 11

Durante a primeira chamada de função, o valor de c é inicializado em 1. Seu valor é aumentado em 5. Agora, o valor de c é 6, que é impresso na tela.

Durante a segunda chamada de função, c não é inicializado com 1 novamente. É porque c é uma variável estática. O valor c é acrescido de 5. Agora, seu valor será 11, que está impresso na tela.

Artigos interessantes...