#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

  • Podczas inicjalizacji wystąpił błąd: int example = [1,2,3]; a nie {} 🙂
  • @AhmedEl nope ..
  • @JakobH, w C tablica ma stały rozmiar – po określeniu rozmiaru tablicy nie można jej zmienić. teraz jaki jest rozmiar do których zdefiniowałeś example? ile elementów próbujesz umieścić w example?
  • Nie udało się ' nie widzę linii przed głównym …

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!

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *