C ++ Feil initialisatorelement er ikke konstant

C ++ Feil initialisatorelement er ikke konstant
I denne artikkelen vil vi diskutere en kompilatorfeil som en programmerer ofte får mens koding på C ++ språk: "Initializer -elementet er ikke konstant". For å forstå feilen først, må vi forstå bakgrunnen til initialisatorer og globale variabler. Så globale variabler er de variablene som en programmerer definerer øverst i koden utenfor funksjonene. En variabel som er deklarert globalt, vil inneholde verdien som er lagret i den gjennom utførelsen av kode og ikke vil miste den når en funksjon er utført.

Fordelen med den globale variabelen er at de kan brukes i hvilken som helst funksjon og hvilken som helst del av koden. Dette betyr at vi kan bruke dem og deres verdier gjennom hele koden vår. Det er nødvendig for C ++ programmering at globale variabler skal initialiseres med konstante uttrykk. Hvis en programmerer eller koder glemmer eller ikke kan gjøre det, vil det føre til at feilen blir diskutert her. Denne feilen er også forårsaket hvis statiske variabler heller ikke er deklarert. Så for å unngå en slik feil, må man passere en konstant verdi mens du initialiserer den globale variabelen eller passerer dem 0. Så dette er en regel definert av C ++ språk. Hvis denne situasjonen finner sted, vil den forårsake denne feilen. Så for å fikse denne typen feil, kan vi erklære variabler i en funksjon eller initialisere dem med en konstant verdi.

Syntaks:

Dette er ikke en innebygd funksjon eller bibliotek. Så den har ikke en standardfunksjon å kalle det. I stedet er det en feil, så den vil ha en melding som vil bli returnert hvis vi møter en slik feil.

Feil: Initializer -elementet er ikke konstant

Ovennevnte er feilmeldingen. Det kan endre seg i noen tilfeller, men konteksten av meldingen vil forbli den samme.

Eksempel # 01:

Nå, for å få et bedre tak i denne feilen og forstå denne feilen mer detaljert, vil vi utføre et praktisk eksempel. Å gjøre, så vi har initialisert globale variabler “A” og “B”. Verdien av variabel a initialiseres til å være 100. Verdien av B er lik en. Dette betyr at uansett hva verdien av a vil være, vil det være den samme som verdien av B. I hovedfunksjonen vår har vi skrevet ut verdien av B med meldingen “Verdien av B =”. Vi har ikke skrevet noen kompleks kode her bare for å gjøre poenget vårt klart. På linje 10 har vi returnert 0 fordi hovedfunksjonen vår har et heltall som returtype. Nå vil vi utføre koden vår for å se hva som skjer.

#inkludere
ved hjelp av navneområdet STD;
int a = 100;
int b = a;
int main ()

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

Etter å ha utført koden vår, har vi ikke ønsket utgang. I stedet for vår utgang, har kompilatoren gitt oss en feil som er "Initializer -elementet er ikke konstant". Etter det viste det oss koden som feilen oppsto i, og det er linje nummer 3. Hvis vi husker koden vår, initialiserte vi verdien av heltall B i linje 3, noe som betyr at det er et problem med det kodestykket. La oss prøve å løse det problemet.

For å løse problemet på linje 3, har vi kontrollert koden vår på nytt, og vi har diagnostisert problemet. Vi diskuterte tidligere i innledningen at denne feilen oppstår når vi ikke erklærer en variabel som vi erklærer globalt i koden vår eller ikke gir en konstant verdi til den. Den samme saken har skjedd her. Vi har passert verdien av heltall A til B. Heltall A er en variabel, ikke en konstant, derfor kan verdien endres, så kompilatoren har vist oss feilen.

Vi har initialisert verdien av B til 100. Etter det utførte vi koden, og koden ble samlet vellykket. Så etter dette eksemplet har vi gjort poenget klart at vi ikke kan gi en dynamisk verdi til en global variabel.

Eksempel # 02:

Dette er et lite komplekst eksempel sammenlignet med det forrige, men formålet med å gjøre et komplekst eksempel er å få deg til å forstå feilen mer detaljert. For å utføre det, har vi erklært fire heltall som er x, y, z og jeg. Verdiene til variablene x, y og z er henholdsvis 10, 20 og 50 mens "i" er et heltall som ikke vil bli brukt til å utføre noen operasjon. Men den vil bli brukt som en iterator for vår loop som vi skal bruke i hovedmetoden vår. Vi kan også erklære dette heltallet i hovedmetoden vår, men vi fant det enkelt, så vi erklærte det her.

Du kan erklære det i hovedfunksjonen eller i en for loop. Etter det erklærte vi en heltallpeker som er lik x. På linje 6 har vi erklært en matrise som også er erklært globalt og passert den tre verdier fordi den har en lengde på 3. I vår hovedmetode har vi skrevet en loop som kjøres tre ganger og vil skrive ut adressen til indeksene til matrisen og verdiene som er lagret i den indeksen for matrisen. Nå vil vi utføre koden vår for å se utdataene våre.

#inkludere
ved hjelp av navneområdet STD;
int a = 10, y = 20, z = 50, i;
int *p = & x;
int *arr [3] = p, & y, & z;
int main ()

for (i = 0; i<3; i++)
cout<<"Address ="<
retur 0;

Etter utførelsen av koden vår har kompilatoren gitt oss feilen som betyr at koden vår ikke er samlet vellykket. Hvis vi tar en titt på meldingen om feilen vår, kan vi se at vi har den samme feilen som i forrige eksempel. Denne gangen har det skjedd på linje 6 i koden vår. Hvis vi ser på koden vår og sjekklinjen 6, initialiserer vi og erklærer vår matrise i linje 6. Så det har vært en feil i å erklære eller initialisere vår matrise. Hvis vi ser på den initialiserende delen, kan vi se at vi har passert variablene y og z i henhold til programmeringsstandardene, men vi har passert X gjennom en peker. Pekeren er ikke en konstant variabel, og verdien kan endres. Så koden har gitt en feil.

For å løse feilen, vil vi passere heltall X direkte og se hva som skjer.

Koden har blitt utført med hell å returnere adressen og verdiene til indeksene til vår matrise.

Konklusjon

I denne artikkelen diskuterte vi en feil som er "Initializer -elementet er ikke riktig". Vi diskuterte det grunnleggende om globale variabler og hvordan vi kan initialisere dem i henhold til kodingsregler og standarder. Vi utførte også flere eksempler for å få denne feilen og løste dem.