#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]); } }
Hvorfor gir dette meg feilmeldingene: «Overflødige element i skalar initialisering» ved «2» i matrisen jeg definerer, og feilmeldingen «Abonnert verdi er ikke en matrise, punkt eller vektor» på «[i]» når jeg prøver å skrive ut Ith-heltallet i matrisen?
Takk.
Kommentarer
Svar
Du må stille inn størrelsen på matrisen.
IE:
int example[10];
så kan du gjøre dette for å stille det første elementet i matrisen til 1:
example[0] = 1;
Du kan ikke gjøre dette skjønt:
int example[10]; example = {1, 2, 3};
Hvis du allerede har definert matrisen, forventer kompilatoren at du definerer hvilket element (IE: [0]) i matrisen du vil definere (eller endre), så hva du vil tilordne det elementet ( IE: 1).
Hvis du vil at størrelsen skal angis automatisk, kan du slette denne:
int example[];
og skrive dette:
int example[] = {1, 2, 3};
så vet kompilatoren at du definerer matrisen, og setter verdiene til verdiene til de 3 elementene til 1, 2 og 3.
Koden din skal se ut slik:
#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]); } }
Håper dette hjelper! 🙂
Svar
Ved å gjøre
int example[];
du initialiserer en peker til en matrise hvis størrelse ikke er definert. Etter det i
int example = {1,2,3};
legger du til verdier i pekeren som er ulogisk og uten betydning, du kan bare gjøre det som
int example[3]; int example = {1,2,3};
Håper dette hjelper!
example
til å være av? hvor mange elementer prøver du å skyve inn iexample
?