#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]); } } 

Miksi tämä antaa minulle virheilmoitukset: ”Ylimääräiset elementit skalaarialustuksessa” kohdassa ”2” taulukossa ”määritän”, ja virheilmoitus ”Substited value is not a matric, point or vector” on ”[i]” my yritettäessä tulostaa taulukon I kokonaislukua?

Kiitos.

Kommentit

  • Alustuksessa on virhe: int esimerkki = [1,2,3]; eikä {} 🙂
  • @AhmedEl nope ..
  • @JakobH, ryhmässä C taulukon koko on kiinteä – kun matriisin koko on määritetty, sitä ei voi muuttaa. nyt mikä on koko että määritit example olevan? kuinka monta elementtiä yrität työntää example?
  • Valitettavasti ei ' ei näe riviä ennen päätaulukkoa …

Vastaa

Sinun on asetettava taulukon koko.

IE:

int example[10]; 

sitten voit tehdä tämän asetellaksesi taulukon ensimmäinen elementti 1:

example[0] = 1; 

Et voi kuitenkaan tehdä tätä:

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

Jos olet jo määrittänyt taulukon, kääntäjä odottaa sinun määrittävän taulukon elementin (IE: [0]), jonka haluat määritellä (tai muuttaa), niin mitä haluat määrittää tälle elementille ( IE: 1).

Jos haluat koon asettamisen automaattisesti, voit poistaa tämän:

int example[]; 

ja kirjoittaa tämän:

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

kääntäjä tietää, että määrität taulukon ja asetat 3 elementin arvojen arvoksi 1, 2 ja 3.

Koodisi tulisi näyttää tältä:

#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]); } } 

Toivottavasti tämä auttaa! 🙂

Vastaa

Tekemällä

int example[]; 

aloitat osoittimen matriisiin, jonka kokoa ei ole määritelty. Sen jälkeen kohdassa

int example = {1,2,3}; 

sinä lisäät osoittimeen arvoja, mikä on epäloogista eikä sillä ole mitään merkitystä. Voit tehdä sen vain kuten

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

Toivottavasti tämä auttaa!

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *