#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]); } }
De ce îmi dă acest lucru mesajele de eroare: „Excesul de elemnți în inițializatorul scalar” la „2” în matricea pe care o definesc, iar mesajul de eroare „Valoarea subcriptată nu este o matrice, un punct sau un vector” la „[i]” al meu când încercăm să tipărim întregul Ith din matrice?
Mulțumesc.
Comentarii
Răspunde
Trebuie să setați dimensiunea tabloului.
IE:
int example[10];
atunci puteți face acest lucru pentru a seta primul element al matricei la 1:
example[0] = 1;
Totuși, nu puteți face acest lucru:
int example[10]; example = {1, 2, 3};
Dacă ați definit deja matricea, compilatorul se așteaptă să definiți ce element (IE: [0]) din matrice doriți să definiți (sau să modificați), atunci ce doriți să atribuiți acelui element ( IE: 1).
dacă doriți ca dimensiunea să fie setată automat, puteți șterge acest lucru:
int example[];
și scrieți:
int example[] = {1, 2, 3};
atunci compilatorul știe că definiți matricea și setați valorile valorilor celor 3 elemente la 1, 2 și 3.
Codul dvs. ar trebui să arate cam așa:
#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]); } }
Sper că acest lucru vă va ajuta! 🙂
Răspuns
Făcând
int example[];
inițializați un pointer către o matrice a cărei dimensiune nu este definită. După aceea, în
int example = {1,2,3};
yu adăugați valori indicatorului care este ilogic și nu are nicio semnificație, puteți face acest lucru doar ca
int example[3]; int example = {1,2,3};
Sper că acest lucru vă va ajuta!
example
să fie de? câte elemente încercați să împingeți înexample
?