#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 giver dette mig fejlmeddelelserne: “Overskydende elemnter i skalar initialisering” ved “2” i det array, jeg definerer, og fejlmeddelelsen “Subcripted value is not an array, point or vector” at my “[i]” når man prøver at udskrive Ith-heltal i arrayet?

Tak.

Kommentarer

  • Der er en fejl i initialiseringen: int eksempel = [1,2,3]; og ikke {} 🙂
  • @ AhmedEl nej ..
  • @JakobH i C har en matrix fast størrelse – når størrelsen på en matrix er bestemt, kan den ikke ændres. hvad er størrelsen nu at du definerede example til at være af? hvor mange elementer prøver du at skubbe ind i example?
  • Undskyld ikke ' t se linjen før hoved …

Svar

Du skal indstille arrayets størrelse.

IE:

int example[10]; 

så kan du gøre dette for at indstille det første element i arrayet til 1:

example[0] = 1; 

Du kan dog ikke gøre dette:

int example[10]; example = {1, 2, 3}; 

Hvis du allerede har defineret arrayet, forventer compileren, at du definerer hvilket element (IE: [0]) i arrayet, du vil definere (eller ændre), så hvad du vil tildele det element ( IE: 1).

Hvis du ønsker, at størrelsen skal indstilles automatisk, kan du slette dette:

int example[]; 

og skrive dette:

int example[] = {1, 2, 3}; 

så ved compileren, at du definerer arrayet og sætter værdierne for værdierne for de 3 elementer til 1, 2 og 3.

Din kode skal se sådan ud:

#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åber det hjælper! 🙂

Svar

Ved at gøre

int example[]; 

du initialiserer en markør til et array, hvis størrelse ikke er defineret. Derefter tilføjer du

int example = {1,2,3}; 

værdier til markøren, som er ulogisk og ikke har nogen betydning, du kan bare gøre det som

int example[3]; int example = {1,2,3}; 

Håber dette hjælper!

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *