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

Perché questo mi dà i messaggi di errore: “Excess elemnts in scalar initializer” a “2” nellarray che sto definendo e il messaggio di errore “Il valore sottocritto non è un array, un punto o un vettore” nel mio “[i]” quando provo a stampare il numero intero Ith dellarray?

Grazie.

Commenti

  • Cè un errore nellinizializzazione: int example = [1,2,3]; e non {} 🙂
  • @AhmedEl no ..
  • @JakobH, in C, un array ha una dimensione fissa – una volta che la dimensione di un array è determinata, non può essere modificata. ora qual è la dimensione di cui hai definito example? quanti elementi stai cercando di inserire in example?
  • Scusa, no ' t vedere la riga prima di main …

Answer

Devi impostare la dimensione dellarray.

IE:

int example[10]; 

allora potresti farlo per impostare il primo elemento dellarray a 1:

example[0] = 1; 

Non puoi farlo però:

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

Se hai già definito larray, il compilatore si aspetta che tu definisca quale elemento (IE: [0]) dellarray vuoi definire (o modificare), allora cosa vuoi assegnare a quellelemento ( IE: 1).

se desideri che la dimensione venga impostata automaticamente, puoi eliminare questo:

int example[]; 

e scrivere questo:

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

allora il compilatore sa che stai definendo larray e impostando i valori dei valori dei 3 elementi su 1, 2 e 3.

Il tuo codice dovrebbe assomigliare a questo:

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

Spero che questo aiuti! 🙂

Risposta

Facendo

int example[]; 

stai inizializzando un puntatore a un array la cui dimensione non è definita. Dopodiché in

int example = {1,2,3}; 

stai aggiungendo valori al puntatore che è illogico e non ha significato, puoi semplicemente farlo come

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

Spero che questo aiuti!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *