O elemento inicializador de erro C ++ não é constante

O elemento inicializador de erro C ++ não é constante
Neste artigo, discutiremos um erro do compilador que um programador geralmente recebe durante a codificação na linguagem C ++: o “elemento inicializador não é constante”. Para entender o erro primeiro, precisamos entender os antecedentes dos inicializadores e variáveis ​​globais. Portanto, variáveis ​​globais são aquelas variáveis ​​que um programador define no topo do código fora das funções. Uma variável declarada globalmente manterá o valor que é armazenado nela durante toda a execução do código e não o perderá assim que uma função for executada.

A vantagem da declaração global de variáveis ​​é que elas podem ser usadas em qualquer função e em qualquer parte do código. Isso significa que podemos usá -los e seus valores em todo o nosso código. É necessário para a programação de C ++ que as variáveis ​​globais devem ser inicializadas com expressões constantes. Se um programador ou codificador esquecer ou não conseguir fazê -lo, fará com que o erro seja discutido aqui. Este erro também é causado se as variáveis ​​estáticas também não forem declaradas. Portanto, para evitar esse erro, é preciso passar por um valor constante enquanto inicializa a variável global ou passa por eles 0. Então, esta é uma regra definida pela linguagem C ++. Se essa situação ocorrer, causará este erro. Portanto, para corrigir esse tipo de erro, podemos declarar variáveis ​​em uma função ou inicializá -las com um valor constante.

Sintaxe:

Esta não é uma função ou biblioteca interna. Portanto, não tem uma função padrão para chamá -la. Em vez disso, é um erro, para que terá uma mensagem que será devolvida se encontrarmos esse erro.

Erro: o elemento inicializador não é constante

O acima mostrado é a mensagem de erro. Pode mudar em alguns casos, mas o contexto da mensagem permanecerá o mesmo.

Exemplo # 01:

Agora, para obter um melhor erro e entender esse erro com mais detalhes, realizaremos um exemplo prático. Para fazer, então inicializamos variáveis ​​globais "a" e "b". O valor da variável A é inicializado como 100. O valor de B é igual a um. Isso significa que qualquer que seja o valor de A será o mesmo que o valor de B. Em nossa função principal, imprimimos o valor de B com a mensagem "O valor de b =". Não escrevemos nenhum código complexo aqui apenas para deixar nosso ponto claro. Na linha 10, retornamos 0 porque nossa função principal tem um número inteiro como seu tipo de retorno. Agora, vamos executar nosso código para ver o que acontece.

#incluir
usando namespace std;
int a = 100;
int b = a;
int main ()

cout<<"The value of b="<retornar 0;

Depois de executar nosso código, não temos a saída desejada. Em vez de nossa saída, o compilador nos deu um erro que é "elemento inicializador não é constante". Depois disso, nos mostrou o código em que o erro ocorreu e que é a linha número 3. Agora, se lembrarmos nosso código, inicializamos o valor do número inteiro B na linha 3, o que significa que há um problema com esse pedaço de código. Vamos tentar resolver esse problema.

Para resolver o problema na linha 3, verificamos nosso código e diagnosticamos o problema. Discutimos anteriormente na introdução de que esse erro ocorre quando não declaramos uma variável que declaramos globalmente em nosso código ou não passamos um valor constante para ele. O mesmo caso ocorreu aqui. Passamos o valor do número inteiro a para B. O número inteiro A é uma variável, não uma constante; portanto, seu valor pode mudar, então o compilador nos mostrou o erro.

Nós inicializamos o valor de B a 100. Depois disso, executamos o código e o código foi compilado com sucesso. Portanto, neste exemplo, deixamos claro que não podemos passar um valor dinâmico para uma variável global.

Exemplo # 02:

Este é um exemplo um pouco complexo em comparação com o anterior, mas o objetivo de fazer um exemplo complexo é fazer você entender o erro em mais detalhes. Para executá -lo, declaramos quatro números inteiros que são x, y, z e eu. Os valores das variáveis ​​x, y e z são 10, 20 e 50, respectivamente, enquanto "i" é um número inteiro que não será usado para executar nenhuma operação. Mas será usado como iterador para o nosso loop que usaremos em nosso método principal. Também podemos declarar esse número inteiro em nosso método principal, mas achamos fácil, então declaramos aqui.

Você pode declará -lo na função principal ou em um loop para. Depois disso, declaramos um ponteiro inteiro que é igual a x. Na linha 6, declaramos uma matriz que também é declarada globalmente e passou por três valores porque tem um comprimento de 3. Em nosso método principal, escrevemos um loop que será executado três vezes e imprimirá o endereço dos índices da matriz e os valores armazenados nesse índice da matriz. Agora, vamos executar nosso código para ver nossa saída.

#incluir
usando namespace std;
int a = 10, y = 20, z = 50, i;
int *p = & x;
int *arr [3] = p, & y, & z;
int main ()

para (i = 0; i<3; i++)
cout<<"Address ="<
retornar 0;

Após a execução do nosso código, o compilador nos deu o erro, o que significa que nosso código não é compilado com sucesso. Se dermos uma olhada na mensagem de nosso erro, podemos ver que temos o mesmo erro que no exemplo anterior. Desta vez, ocorreu na linha 6 do nosso código. Se olharmos para o nosso código e a linha de verificação 6, estamos inicializando e declarando nossa matriz na linha 6. Portanto, houve um erro em declarar ou inicializar nossa matriz. Se olharmos para a parte inicial, podemos ver que passamos as variáveis ​​y e z de acordo com os padrões de programação, mas passamos X através de um ponteiro. O ponteiro não é uma variável constante e seu valor pode mudar. Então, o código deu um erro.

Para resolver o erro, passaremos o número inteiro diretamente e ver o que acontece.

O código foi executado com sucesso retornando o endereço e os valores dos índices de nossa matriz.

Conclusão

Neste artigo, discutimos um erro que é "elemento inicializador não está correto". Discutimos o básico das variáveis ​​globais e como inicializá -las de acordo com as regras e padrões de codificação. Também realizamos vários exemplos para obter este erro e os resolvemos.