#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]); } }
Varför ger detta mig felmeddelandena: ”Överskott av elemnts i skalär initialisering” vid ”2” i arrayen jag definierar och felmeddelandet ”Subcripted value is not an array, point or vector” at my ”[i]” när man försöker skriva ut Ith-heltalet i arrayen?
Tack.
Kommentarer
Svar
Du måste ställa in arrayens storlek.
IE:
int example[10];
så kan du göra detta för att ställa in det första elementet i matrisen till 1:
example[0] = 1;
Du kan dock inte göra detta:
int example[10]; example = {1, 2, 3};
Om du redan har definierat arrayen förväntar kompilatorn dig att definiera vilket element (IE: [0]) i arrayen du vill definiera (eller ändra), vad du vill tilldela det elementet ( IE: 1).
Om du vill att storleken ska ställas in automatiskt kan du radera den här:
int example[];
och skriva detta:
int example[] = {1, 2, 3};
då vet kompilatorn att du definierar arrayen och ställer in värdena för värdena för de 3 elementen till 1, 2 och 3.
Din kod ska se ut så här:
#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]); } }
Hoppas det hjälper! 🙂
Svar
Genom att göra
int example[];
du initialiserar en pekare till en matris vars storlek inte är definierad. Efter det i
int example = {1,2,3};
ska du lägga till värden i pekaren som är ologisk och saknar betydelse, du kan bara göra det som
int example[3]; int example = {1,2,3};
Hoppas det hjälper!
example
ska vara? hur många element försöker du trycka in iexample
?