Vídeo: [C] Aula 25 - Array / Vetores 2024
Se você possui uma matriz e você não quer que seus conteúdos mudem, você pode fazer uma matriz constante. As seguintes linhas de código, encontradas no exemplo Array05, demonstram esta abordagem:
const int Permanente [5] = {1, 2, 3, 4, 5}; cout << permanente [1] << endl;
Esta matriz funciona como qualquer outra matriz, exceto que você não pode alterar os números dentro dela. Se você adicionar uma linha como a seguinte linha, você obterá um erro no compilador, porque o compilador está ciente de constantes:
Permanente [2] = 5;
Aqui está o erro que você obtém quando você tenta isso em Código:: Blocos:
erro: atribuição da localização somente leitura 'Permanente [2]'
E quanto a uma matriz constante de não confiantes? Você pode fazer aquilo? Bem, às vezes - dependendo do compilador. Tão horrível quanto o seguinte código (encontrado no exemplo Array06) parece - e não é padrão ANSI! - você pode fazer isso com versões mais antigas dos compiladores gcc. (Microsoft Visual C ++ e Borland C ++ Builder não o permitem e o código:: O compilador de blocos apresenta um erro: mensagem de erro de atribuição de matriz inválida.)
int NonConstant [5] = {1, 2, 3, 4, 5}; int OtherList [5] = {10, 11, 12, 13, 14}; OtherList = NonConstant;
Em outras palavras, essa terceira linha está dizendo: "Esqueça o que OtherList apontar para; Em vez disso, faça com que aponte para a primeira matriz, {1, 2, 3, 4, 5}! "Agora, você realmente não deve escrever código como esse (lembre-se, mantenha as coisas simples e compreensíveis), então, se você quiser evitar esse tipo de coisa, você pode tornar a matriz constante:
< ! --3 ->const int NonConstant [5] = {1, 2, 3, 4, 5}; const int OtherList [5] = {10, 11, 12, 13, 14}; OtherList = NonConstant;
Agora, quando o compilador chega à terceira linha, isso lhe dá um erro:
erro: atribuição da variável somente leitura 'OtherList'
Mas você pode notar que a maneira como você fez a matriz constante foi da mesma maneira que você fez seus elementos constantes no código que veio logo antes deste exemplo. Opa! Sobre o que é isso? Acontece que existem algumas regras.
A lista a seguir descreve as regras, em detalhes, para tornar os arrays constantes:
-
Se você quer fazer uma matriz constante, você pode preceder seu tipo com a palavra const. Quando você faz isso, o nome da matriz é constante, e os elementos dentro da matriz são também constantes. Assim, você não pode ter uma matriz constante com elementos não constantes, nem pode ter uma matriz não constante com elementos constantes.
-
A noção de uma matriz nonconstant existe somente em gcc e não é padrão ANSI.
Se você realmente quer obter técnico, o padrão C ++ ANSI diz que quando você coloca a palavra const na frente de uma declaração de matriz, você não está fazendo a matriz constante; Você está dizendo que a matriz contém apenas constantes.
No entanto, quando você usa const desse jeito, a maioria dos compiladores também faz a matriz em si constante. Mas está tudo bem. as pessoas não devem tomar um nome de array e copiá-lo para outra coisa. Esse não é um bom estilo de programação, e é só pedir bugs - ou, pelo menos, confusão - mais tarde.