#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

  • Det er en feil i initialiseringen: int eksempel = [1,2,3]; og ikke {} 🙂
  • @ AhmedEl nei ..
  • @JakobH, i C har en matrise fast størrelse – når størrelsen på en matrise er bestemt, kan den ikke endres. nå hva er størrelsen at du definerte example til å være av? hvor mange elementer prøver du å skyve inn i example?
  • Beklager ikke ' t se linjen før hoved …

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!

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *