Na programação C, as aulas de armazenamento determinam o escopo
,
Lifetime e
Linkage de uma variável ou função. Eles controlam como o compilador gerencia a memória alocada a esses elementos. Vamos quebrar cada aula de armazenamento:
1. Automático (automático): * Escopo: Local para o bloco em que é declarado.
*
Lifetime: Existe apenas durante a execução do bloco onde é declarado.
* Linking
: Nenhuma ligação (não é acessível de fora da função).
*
Exemplo: `` `c
int main () {
int x =10; // 'x' é uma variável automática
// ...
}
`` `
2. Externo (externo): * Escopo: Escopo global.
*
Lifetime: Existe durante toda a execução do programa.
* Linking
: Links externos (acessível de outros arquivos).
*
Exemplo: `` `c
// em file1.c
extern int y; // declara 'y' como externo
// em file2.c
int y =20; // define 'y'
`` `
3. Estático: * Escopo: Local para o bloco onde é declarado.
*
Lifetime: Existe para toda a execução do programa.
* Linking
: Link interno (acessível apenas dentro do arquivo atual).
*
Exemplo: `` `c
void myfunc () {
estático int contagem =0; // 'count' mantém seu valor entre chamadas de função
contagem ++;
printf ("count:%d \ n", contagem);
}
`` `
4. Registro: * Escopo: Local para o bloco onde é declarado.
*
Lifetime: Existe apenas durante a execução do bloco onde é declarado.
* Linking
: Nenhuma ligação (não é acessível de fora da função).
*
Exemplo: `` `c
void myfunc () {
registrar int i; // Solicitar para o compilador armazenar 'i' em um registro
para (i =0; i <10; i ++) {
// ...
}
}
`` `
Pontos de chave: * Escopo: Determina onde no programa uma variável ou função pode ser acessada.
*
Lifetime: Controla quanto tempo existe a variável na memória.
* Linking
: Determina se uma variável ou função pode ser acessada de outros arquivos de origem.
Por que as aulas de armazenamento são importantes? Compreender as classes de armazenamento é crucial para a programação efetiva de C:
*
Gerenciamento de memória: Eles ajudam você a controlar como a memória é alocada e desalocada.
*
Organização de código: Eles facilitam a modularidade e a reutilização de código.
*
Otimização de desempenho: Você pode usar o `Register` para melhorar o desempenho potencialmente armazenando variáveis nos registros.
Informações adicionais: * As classes de armazenamento são definidas usando palavras -chave na variável ou declaração de função.
* A palavra -chave `auto` é frequentemente omitida porque é a classe de armazenamento padrão para variáveis locais.
* A palavra -chave `Register` é uma dica para o compilador, e nem sempre pode ser homenageada.
Deixe -me saber se você deseja explorar uma aula de armazenamento específica com mais detalhes ou tiver mais perguntas.