Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

Classes de armazenamento em C:auto, extern, static, classe de registro em C

O que é classe de armazenamento em C?


Uma classe de armazenamento representa a visibilidade e a localização de uma variável. Ele informa de qual parte do código podemos acessar uma variável. Uma classe de armazenamento em C é usada para descrever as seguintes coisas:

Assim, uma classe de armazenamento é usada para representar as informações sobre uma variável.

NOTA:Uma variável não está associada apenas a um tipo de dado, seu valor, mas também a uma classe de armazenamento.

Há um total de quatro tipos de classes de armazenamento padrão. A tabela abaixo representa as classes de armazenamento em C.
Classe de armazenamento Propósito automático É uma classe de armazenamento padrão.extern É uma variável global.estática É uma variável local capaz de retornar um valor mesmo quando o controle é transferido para a chamada da função.registrar É uma variável que é armazenada dentro de um Register.
Neste tutorial C, você aprenderá diferentes tipos de classes de armazenamento em C com exemplos-

Classe de armazenamento automático em C


As variáveis ​​definidas usando a classe de armazenamento automático são chamadas de variáveis ​​locais. Auto significa classe de armazenamento automático. Uma variável está na classe de armazenamento automático por padrão se não for especificada explicitamente.

O escopo de uma variável automática é limitado apenas ao bloco específico. Uma vez que o controle sai do bloco, o acesso é destruído. Isso significa que apenas o bloco no qual a variável auto é declarada pode acessá-la.

Uma palavra-chave auto é usada para definir uma classe de armazenamento automático. Por padrão, uma variável automática contém um valor de lixo.
Example, auto int age;

O programa abaixo define uma função com duas variáveis ​​locais
int add(void) {
   int a=13;
   auto int b=48;
return a+b;}

Tomamos outro programa que mostra o nível de escopo “nível de visibilidade” para variáveis ​​automáticas em cada código de bloco que são independentes entre si:
#include <stdio.h>
int main( )
{
  auto int j = 1;
  {
    auto int j= 2;
    {
      auto int j = 3;
      printf ( " %d ", j);
    }
    printf ( "\t %d ",j);
  }
  printf( "%d\n", j);}

RESULTADO:
 3 2 1

Classe de armazenamento externo em C


Extern significa classe de armazenamento externo. A classe de armazenamento externo é usada quando temos funções ou variáveis ​​globais que são compartilhadas entre dois ou mais arquivos.

Palavra-chaveexterna é usado para declarar uma variável global ou função em outro arquivo para fornecer a referência de variável ou função que já foi definida no arquivo original.

As variáveis ​​definidas usando uma palavra-chave externa são chamadas de variáveis ​​globais. Essas variáveis ​​são acessíveis em todo o programa. Observe que a variável extern não pode ser inicializada ela já foi definida no arquivo original.
Example, extern void display();

Primeiro arquivo:main.c

#include <stdio.h>
extern i;
main() {
   printf("value of the external integer is = %d\n", i);
   return 0;}

Segundo arquivo:original.c

#include <stdio.h>
i=48;

Resultado:
 value of the external integer is = 48


Para compilar e executar o código acima, siga os passos abaixo

Etapa 1) Criar novo projeto,
  1. Selecione o aplicativo de console
  2. Clique em Ir



Etapa 2) Selecione C e clique em Avançar



Etapa 3) Clique em Avançar



Etapa 4) Insira os detalhes e clique em Avançar



Etapa 5) Clique em Concluir



Etapa 6) Coloque o código principal como mostrado no programa anterior no arquivo main.c e salve-o



Etapa 7) Crie um novo arquivo C [File -> new -> Empty File , salve (como original.c ) e adicione-o ao projeto atual clicando em “OK” na caixa de diálogo .



Etapa 8) Coloque e salve o código C do arquivo original.c mostrado no exemplo anterior sem a função main().



Etapa 9) Construa e execute seu projeto. O resultado é mostrado na próxima figura


Classe de armazenamento estático em C


As variáveis ​​estáticas são usadas dentro da função/arquivo como variáveis ​​estáticas locais. Eles também podem ser usados ​​como uma variável global
Example: static int count = 10;

Tenha em mente que a variável estática tem um valor inicial padrão zero e é inicializada apenas uma vez em sua vida útil.
#include <stdio.h> /* function declaration */
void next(void);
static int counter = 7; /* global variable */
main() {
 while(counter<10) {
      next();
      counter++;   }
return 0;}
void next( void ) {    /* function definition */
   static int iteration = 13; /* local static variable */
   iteration ++;
   printf("iteration=%d and counter= %d\n", iteration, counter);}

Resultado:
iteration=14 and counter= 7
iteration=15 and counter= 8
iteration=16 and counter= 9

As variáveis ​​globais são acessíveis em todo o arquivo, enquanto as variáveis ​​estáticas são acessíveis apenas à parte específica de um código.

A vida útil de uma variável estática está em todo o código do programa. Uma variável que é declarada ou inicializada usando a palavra-chave estática sempre contém zero como valor padrão.

Registrar classe de armazenamento em C


Você pode usar a classe de armazenamento de registradores quando quiser armazenar variáveis ​​locais dentro de funções ou blocos em registradores de CPU em vez de RAM para ter acesso rápido a essas variáveis. Por exemplo, “contadores” são bons candidatos para serem armazenados no registro.
Example: register int age;

A palavra-chave registrar é usado para declarar uma classe de armazenamento de registro. As variáveis ​​declaradas usando a classe de armazenamento de registradores têm vida útil ao longo do programa.

É semelhante à classe de armazenamento automático. A variável é limitada ao bloco específico. A única diferença é que as variáveis ​​declaradas usando a classe de armazenamento de registradores são armazenadas dentro de registradores da CPU ao invés de uma memória. O registrador tem acesso mais rápido que o da memória principal.

As variáveis ​​declaradas usando a classe de armazenamento de registro não têm valor padrão. Essas variáveis ​​geralmente são declaradas no início de um programa.
#include <stdio.h> /* function declaration */
main() {
{register int  weight;
int *ptr=&weight ;/*it produces an error when the compilation occurs ,we cannot get a memory location when dealing with CPU register*/}
}

RESULTADO:
error: address of register variable 'weight' requested

A tabela a seguir resume os principais recursos de cada classe de armazenamento que são comumente usados ​​na programação C
Classe de armazenamento Declaração Armazenamento Valor inicial padrão Escopo Vida útil automático Dentro de uma função/blocoMemoryUnpredictableNa função/blocoNa função/blocoregistrar Dentro de uma função/blocoCPU RegistersGarbageIn the function/blockIn the function/blockextern Fora de todas as funçõesMemoryZeroEntre o arquivo e outros arquivos onde a variável é declarada como externprogram runtimeEstático (local) Dentro de uma função/blockMemoryZeroIn the function/blockprogram runtimeStatic (global) Fora de todas as funçõesMemoryZeroGlobalprogram runtime
Resumo

Neste tutorial, discutimos as classes de armazenamento em C, para resumir:

Linguagem C

  1. Classe e objeto C#
  2. Palavra-chave estática C#
  3. Classe aninhada C#
  4. Classes e objetos C++
  5. Função de amigo C++ e classes de amigo
  6. Modelos de classe C++
  7. Classe de armazenamento C
  8. C - Classes de Armazenamento
  9. Classes de armazenamento em C++
  10. Interfaces em C++ (classes abstratas)