Compartilhar via


C Classes de armazenamento

A "classe de armazenamento" de uma variável determina se o item tem um tempo de vida "global" ou "local".C chama esses dois tempos de vida "static" e "automático". Um item com um tempo de vida global existe e tem um valor durante a execução do programa.Todas as funções têm vidas úteis de globais.

Variáveis automáticas ou variáveis com o tempo de vida local, são alocadas novo armazenamento de cada controle em tempo de execução passa para o bloco no qual eles são definidos.Quando retorna a execução, as variáveis não têm mais valor significativo.

C oferece os seguintes especificadores de classe de armazenamento:

Sintaxe

  • especificador de classe de armazenamento:
    auto

    registrar

    estático

    extern

    TypeDef

    __declspec ( estendida-decl-modificador-seq ) / * específicos do Microsoft * /

Exceto para __declspec, você só pode usar uma especificador de classe de armazenamento na especificador de declaração em uma declaração.Não se for feita nenhuma especificação de classe de armazenamento, declarações dentro de um bloco criar objetos automáticos.

Itens declarados com o auto ou registrar especificador têm vidas úteis de locais.Itens declarados com o estático ou extern especificador ter tempos de vida globais.

Uma vez que typedef e __declspec semanticamente diferem dos outros quatro especificador de classe de armazenamento terminais, eles são abordados separadamente.Para obter informações específicas sobre typedef, consulte Typedef declarações.Para obter informações específicas sobre __declspec, consulte Atributos estendidos de classe de armazenamento.

O posicionamento das declarações de variáveis e funções dentro de arquivos de origem também afeta a visibilidade e a classe de armazenamento.Declarações fora de todas as definições de função são consideradas exibido no "nível externo". Declarações dentro das definições de função é exibido no "nível interno".

O significado exato de cada especificador de classe de armazenamento depende de dois fatores:

  • Se a declaração é exibida no nível externo ou interno

  • Se o item que está sendo declarado é uma variável ou uma função

Especificadores de classe de armazenamento para declarações de nível externo e Especificadores de classe de armazenamento para declarações em nível interno descrevem o especificador de classe de armazenamento terminais em cada tipo de declaração e explique o comportamento padrão quando o especificador de classe de armazenamento for omitido de uma variável.Especificadores de classe de armazenamento com declarações de função discute especificadores de classe de armazenamento usados com funções.

Consulte também

Conceitos

Declarações e tipos