#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

  • Det finns ett misstag i initialiseringen: int exempel = [1,2,3]; och inte {} 🙂
  • @AhmedEl nej ..
  • @JakobH, i C har en matris fast storlek – när storleken på en matris har bestämts kan den inte ändras. nu vad är storleken att du definierade att example ska vara? hur många element försöker du trycka in i example?
  • Tyvärr ' t se raden före huvud …

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!

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *