Uma declaração simples de matriz curta que inclui sua definição pode ser declarada em qualquer escopo em C ++ da seguinte maneira:
char ch [] = 'a', 'b', 'c', 'd', 'e';Esta é uma variedade de personagens cujo nome é CH. A matriz literal é um exemplo de um inicializer_list.
Essa mesma matriz pode ser declarada e inicializada da seguinte maneira, em um escopo de função ou em um escopo local aninhado, mas não no escopo global:
char ch [5];Se este segmento de código for digitado no escopo global, o compilador emitirá cinco mensagens de erro para as cinco linhas de atribuição. No entanto, a matriz pode ser declarada sem inicialização no escopo global e, em seguida, os valores atribuídos no escopo da função (ou em outros escopos), como mostra o seguinte programa:
#incluirO escopo global tem a declaração "CHAR CH [5];". A atribuição dos valores foi feita na função C ++ main (). A função principal C ++ ainda é uma função.
Essas são as regras sobre como usar uma matriz no escopo global, o escopo da função e o escopo local aninhado (ou qualquer outro escopo):
1. Uma matriz pode ser declarada com a inicialização de valores práticos em uma declaração em qualquer escopo (global, função, escopo local aninhado).
2. Uma matriz pode ser declarada sem inicialização de valores práticos no escopo global e depois atribuiu valores práticos no escopo da função ou escopo local aninhado.
3. Uma matriz pode ser declarada sem inicialização de valores práticos no escopo da função ou no escopo local aninhado e atribuíram valores práticos no mesmo escopo local.
Essas regras também se aplicam aos tipos escalares (fundamentais). O restante deste artigo começa ilustrando a declaração e a atribuição de valores práticos de tipos fundamentais nos escopos globais e outros (função e local). Isto é seguido pela ilustração da declaração e atribuição de valores práticos do tipo de matriz nos escopos globais e outros (função e local). O número inteiro (int) é usado como exemplo para os tipos fundamentais. As três regras acima são demonstradas para o número inteiro e a matriz.
Declaração do tipo inteiro com escopos globais e outros
Nesta seção, as regras são demonstradas com o tipo inteiro.
Primeira regra:
Um número inteiro pode ser declarado com a inicialização de um valor prático em uma declaração em qualquer escopo (global, função, escopo local aninhado). O programa a seguir ilustra isso com três variáveis inteiras diferentes:
#incluirA saída é:
1O escopo local aninhado (bloco) é o que está começando com a condição IF.
Segunda regra:
Um número inteiro pode ser declarado sem a inicialização de um valor prático no escopo global e depois atribuiu um valor prático no escopo da função ou no escopo local aninhado. O programa a seguir ilustra isso com uma variável inteira:
#incluirA saída é:
0Quando um número inteiro é declarado sem atribuição, o número inteiro assume o valor padrão de zero. Nesse caso, o zero não é um valor prático.
Terceira regra:
Um número inteiro pode ser declarado sem inicialização de um valor prático no escopo da função ou no escopo local aninhado e atribuiu valores práticos no mesmo escopo local. O programa a seguir ilustra isso com duas variáveis inteiras diferentes:
#incluirA saída é:
2O programa a seguir não será compilação e o compilador emitirá uma mensagem de erro:
#incluirO problema é o segmento de código de escopo global:
int inter;A segunda declaração não é permitida neste contexto.
Declaração do tipo de matriz com escopos globais e outros
Primeira regra:
Uma matriz pode ser declarada com a inicialização de valores práticos em uma declaração em qualquer escopo (global, função, escopo local aninhado). O programa a seguir ilustra isso com três matrizes diferentes:
#incluirA saída deve ser:
ABCDEO escopo local aninhado (bloco) é o que está começando com a condição IF.
Segunda regra:
Uma matriz pode ser declarada sem inicialização de valores práticos no escopo global e depois atribuiu valores práticos no escopo da função ou no escopo local aninhado (ou qualquer outro escopo). O programa a seguir ilustra isso com uma matriz:
#incluirA saída deve ser:
"" "" "Quando um personagem é declarado sem atribuição, o personagem assume o valor padrão de "(sem caracteres). Nesse caso, o "não é um valor prático. Existem cinco "para o caso global.
Nota: A tarefa só pode ser feita dessa maneira sem o Initializer_list.
Nota: Com as matrizes, quando a matriz é declarada sem inicialização de valores práticos em uma função ou escopo aninhado, os valores padrão podem ser arbitrários. Os valores padrão são apenas ", para o caso global. Este recurso arbitrário também se aplica à matriz inteira.
Terceira regra:
Uma matriz pode ser declarada sem inicialização de valores práticos no escopo da função ou no escopo local aninhado e atribuíram valores práticos no mesmo escopo local. O programa a seguir ilustra isso com duas matrizes diferentes:
#incluirA saída deve ser:
FghijO programa a seguir não será compilação e o compilador emitirá algumas mensagens de erro:
#incluirO problema é o segmento de código de escopo global:
CHAR CH1 [5];As declarações de atribuição não são permitidas neste contexto.
Conclusão
Essas são as regras sobre como usar uma matriz no escopo global, o escopo da função e o escopo local aninhado (ou qualquer outro escopo):
1) Uma matriz pode ser declarada com a inicialização dos valores práticos em uma afirmação, em qualquer escopo (global, função, escopo local aninhado).
2) Uma matriz pode ser declarada sem inicialização de valores práticos, no escopo global, e depois atribuiu valores práticos, no escopo da função ou no escopo local aninhado (ou em qualquer outro escopo).
3) Uma matriz pode ser declarada sem inicialização de valores práticos, no escopo da função ou no escopo local aninhado, e atribuíram valores práticos, nesse mesmo escopo local.