#include <cs50.h> #include <stdio.h> int example[]; int main(void) { int example = {1,2,3}; for (int i = 0; i < 3; i++) { printf("%i \n", example[i]); } }
Dlaczego to powoduje wyświetlenie komunikatów o błędach: „Nadmiar elementów w inicjatorze skalarnym” na „2” w tablicy, którą definiuję, a komunikat o błędzie „Wartość podskryptowa nie jest tablicą, punktem ani wektorem” w moim „[i]” podczas próby wydrukowania I-tej liczby całkowitej z tablicy?
Dzięki.
Komentarze
Odpowiedź
Musisz ustawić rozmiar tablicy.
IE:
int example[10];
następnie możesz to zrobić, aby ustawić pierwszy element tablicy na 1:
example[0] = 1;
Nie możesz tego jednak zrobić:
int example[10]; example = {1, 2, 3};
Jeśli już zdefiniowałeś tablicę, kompilator oczekuje, że zdefiniujesz, który element (IE: [0]) tablicy chcesz zdefiniować (lub zmienić), a następnie co chcesz przypisać do tego elementu ( IE: 1).
jeśli chcesz, aby rozmiar był ustawiany automatycznie, możesz usunąć to:
int example[];
i napisać:
int example[] = {1, 2, 3};
wtedy kompilator wie, że definiujesz tablicę i ustawiasz wartości 3 elementów na 1, 2 i 3.
Twój kod powinien wyglądać mniej więcej tak:
#include <cs50.h> #include <stdio.h> int main(void) { int example[] = {1,2,3}; for (int i = 0; i < sizeof(example) / 4; i++) { printf("%d\n", example[i]); } }
Mam nadzieję, że to pomoże! 🙂
Odpowiedź
Robiąc
int example[];
inicjalizujesz wskaźnik do tablicy, której rozmiar nie jest zdefiniowany. Następnie w
int example = {1,2,3};
yu dodajesz wartości do wskaźnika, co jest nielogiczne i nie ma żadnego znaczenia, możesz to zrobić tak jak
int example[3]; int example = {1,2,3};
Mam nadzieję, że to pomoże!
example
? ile elementów próbujesz umieścić wexample
?