Classe de armazenamento C
Classe de armazenamento C
Neste tutorial, você aprenderá sobre escopo e 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, visibilidade e vida útil de uma variável.
Existem 4 tipos de classe de armazenamento:
- automático
- externo
- estático
- registrar
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 <stdio.h>
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ê receberá um erro identificador não declarado i . É porque i é declarado dentro do
for
bloco de laço. Fora do quarteirão, 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 o n1 variável dentro de
func()
pois só existe dentro de main()
. Da mesma forma, você não pode acessar o n2 variável dentro de main()
pois só existe dentro de func()
. Variável global
Variáveis 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 <stdio.h>
void display();
int n = 5; // global variable
int main()
{
++n;
display();
return 0;
}
void display()
{
++n;
printf("n = %d", n);
}
Saída
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 esse problema, a palavra-chave extern
é usado em file2
para indicar que a variável externa está declarada em outro arquivo. Registrar Variável
O
register
palavra-chave é usada para declarar variáveis de registro. As variáveis de registro deveriam ser mais rápidas que as variáveis locais. No entanto, compiladores modernos são muito bons em otimização de código, e há uma rara chance 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 você sabe como otimizar o código para uma determinada aplicação, não há uso de variáveis de registro.
Variável estática
Uma variável estática é declarada usando o
static
palavra-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 <stdio.h>
void display();
int main()
{
display();
display();
}
void display()
{
static int c = 1;
c += 5;
printf("%d ",c);
}
Saída
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 em 1 novamente. É porque c é uma variável estática. O valor c é aumentado em 5. Agora, seu valor será 11, que é impresso na tela.
Linguagem C