C ++ Element inicjalizujący błędu nie jest stały

C ++ Element inicjalizujący błędu nie jest stały
W tym artykule będziemy omawiać błąd kompilatora, który często dostaje programista podczas kodowania w języku C ++: „Element inicjalizujący nie jest stały”. Aby najpierw zrozumieć błąd, musimy zrozumieć tło inicjalizatorów i zmienne globalne. Tak więc zmienne globalne to zmienne, które programista definiuje u góry kodu poza funkcjami. Zmienna zadeklarowana na całym świecie będzie utrzymywała wartość przechowywaną w niej przez cały czas wykonywania kodu i nie stracą jej po wykonaniu funkcji.

Zaletą globalnej deklaracji zmiennych jest to, że można je użyć w dowolnej funkcji i dowolnej części kodu. Oznacza to, że możemy ich używać i ich wartości w całym naszym kodzie. W programowaniu C ++ konieczne jest, aby zmienne globalne powinny być zainicjowane za pomocą stałych wyrażeń. Jeśli programista lub koder zapomnie lub nie jest w stanie tego zrobić, spowoduje to omówienie błędu tutaj. Ten błąd jest również spowodowany, jeśli zmienne statyczne również nie są zadeklarowane. Aby uniknąć takiego błędu, należy przekazać stałą wartość podczas inicjowania zmiennej globalnej lub przekazać je 0. Jest to więc reguła zdefiniowana przez język C ++. Jeśli taka sytuacja nastąpi, spowoduje ten błąd. Aby naprawić ten typ błędu, możemy zadeklarować zmienne w funkcji lub zainicjować je stałą wartością.

Składnia:

To nie jest wbudowana funkcja ani biblioteka. Więc nie ma standardowej funkcji, aby to nazwać. Zamiast tego jest to błąd, więc będzie miał komunikat, który zostanie zwrócony, jeśli napotkamy taki błąd.

Błąd: Element inicjalizujący nie jest stały

Powyższe wyżej to komunikat o błędzie. Może się to zmienić w niektórych przypadkach, ale kontekst wiadomości pozostanie taki sam.

Przykład nr 01:

Teraz, aby uzyskać lepsze zatrzymanie tego błędu i bardziej szczegółowo zrozumienie tego błędu, wykonamy praktyczny przykład. Do zrobienia, dlatego zainicjowaliśmy zmienne globalne „A” i „B”. Wartość zmiennej A jest inicjowana do 100. Wartość B jest równa A. Oznacza to, że niezależnie od wartości A będzie taka sama jak wartość B. W naszej głównej funkcji wydrukowaliśmy wartość B z komunikatem „Wartość B =”. Nie napisaliśmy tutaj żadnego złożonego kodu, aby wyjaśnić nasz punkt. W wierszu 10 zwróciliśmy 0, ponieważ nasza główna funkcja ma liczbę całkowitą jako typ powrotu. Teraz wykonamy nasz kod, aby zobaczyć, co się stanie.

#włączać
za pomocą przestrzeni nazw Std;
int a = 100;
int b = a;
int main ()

Cout<<"The value of b="<powrót 0;

Po wykonaniu naszego kodu nie mamy pożądanego wyjścia. Zamiast naszego wyjścia kompilator dał nam błąd, który jest „elementem inicjalizacyjnym nie jest stały”. Następnie pokazał nam kod, w którym wystąpił błąd, a to jest wiersz nr 3. Teraz, jeśli przypomniemy sobie nasz kod, zainicjowaliśmy wartość liczby całkowitej B w wierszu 3, co oznacza, że ​​istnieje problem z tym kodem. Spróbujmy rozwiązać ten problem.

Aby rozwiązać problem w wierszu 3, ponownie sprawdziliśmy nasz kod i zdiagnozowaliśmy problem. Omówiliśmy wcześniej we wstępie, że ten błąd występuje, gdy nie deklarujemy zmiennej, którą deklarujemy globalnie w naszym kodzie lub nie przekazujemy jej stałej wartości. Ten sam przypadek miał miejsce tutaj. Przeszliśmy wartość liczby całkowitych A do B. Liczba całkowita A jest zmienną, a nie stałą, dlatego jej wartość może się zmienić, więc kompilator pokazał nam błąd.

Zainicjowaliśmy wartość B do 100. Następnie wykonaliśmy kod, a kod został pomyślnie skompilowany. Tak więc, w tym przykładzie, wyjaśniliśmy, że nie możemy przekazać wartości dynamicznej na zmienną globalną.

Przykład nr 02:

Jest to nieco złożony przykład w porównaniu z poprzednim, ale celem wykonania złożonego przykładu jest sprawienie, abyś bardziej szczegółowo zrozumiał błąd. Aby go wykonać, ogłosiliśmy cztery liczby całkowite, które są X, Y, Z i I. Wartości zmiennych x, y i z wynoszą odpowiednio 10, 20 i 50. Ale zostanie użyty jako iterator naszej pętli, której będziemy używać w naszej głównej metodzie. Możemy również zadeklarować tę liczbę całkowitą w naszej głównej metodzie, ale okazało się, że jest to łatwe, więc zadeklarowaliśmy to tutaj.

Możesz to zadeklarować w głównej funkcji lub w pętli. Następnie zadeklarowaliśmy wskaźnik całkowitego, który jest równy x. W wierszu 6 zadeklarowaliśmy tablicę, która jest również deklarowana na całym świecie i przekazała jej trzy wartości, ponieważ ma długość 3. W naszej głównej metodzie napisaliśmy pętlę, która będzie działać trzy razy i wydrukuje adres indeksów tablicy i wartości przechowywane w tym indeksie tablicy. Teraz wykonamy nasz kod, aby zobaczyć nasze wyjście.

#włączać
za pomocą przestrzeni nazw Std;
int a = 10, y = 20, z = 50, i;
int *p = & x;
int *arr [3] = p, & y, i z;
int main ()

dla (i = 0; i<3; i++)
Cout<<"Address ="<
powrót 0;

Po wykonaniu naszego kodu kompilator dał nam błąd, co oznacza, że ​​nasz kod nie jest pomyślnie kompilowany. Jeśli spojrzymy na wiadomość naszego błędu, możemy zobaczyć, że mamy taki sam błąd jak w poprzednim przykładzie. Tym razem miało miejsce w wierszu 6 naszego kodu. Jeśli spojrzymy na nasz kod i wiersz kontrolny 6, inicjujemy i deklarujemy naszą tablicę w wierszu 6. Tak więc był błąd w deklarowaniu lub inicjowaniu naszej tablicy. Jeśli spojrzymy na część inicjalizującą, zobaczymy, że przekazaliśmy zmienne y i z zgodnie ze standardami programowania, ale przekazaliśmy x przez wskaźnik. Wskaźnik nie jest stałą zmienną, a jej wartość może się zmienić. Kod popełnił błąd.

Aby rozwiązać błąd, przejdziemy bezpośrednio liczbę całkowitą X i zobaczymy, co się stanie.

Kod został pomyślnie wykonany, zwracając adres i wartości indeksów naszej tablicy.

Wniosek

W tym artykule omówiliśmy błąd, który jest „elementem inicjalizacyjnym jest nieprawidłowy”. Omówiliśmy podstawy zmiennych globalnych i sposób ich inicjowania zgodnie z zasadami kodowania i standardami. Wykonaliśmy również wiele przykładów, aby uzyskać ten błąd i je rozwiązaliśmy.