#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

  • Există o greșeală la inițializare: int example = [1,2,3]; și nu {} 🙂
  • @AhmedEl nu ..
  • @JakobH, în C, un tablou are dimensiunea fixă – odată ce dimensiunea unui tablou este stabilită, nu mai poate fi modificată. acum care este dimensiunea pe care l-ați definit ca example să fie de? câte elemente încercați să împingeți în example?
  • Ne pare rău ' nu vezi linia dinaintea main …

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!

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *