here is the code
struct point_tag {
int x;
int y;
};
typedef struct point_tag Point;
int main(void)
{
Point pt[] = { {10,20}, {30, 40}, {50,60}};
pt[0] = {100,200};
}
Quando faccio pt[0] = {100, 200}
, il compilatore continua a lamentarsi diPerché questa matrice di assegnazione della struttura non viene compilata?
error:expected expression before '{' token
Io davvero non capisco che anche se. L'espressione non è prima dell'operatore {assegnazione token (=)?
Non capisco perché l'assegnazione sarebbe un problema però. il valore all'indirizzo pt si riferisce a un array di Point. Sto solo impostando il Punto 0 come nuovo punto e so che assegnare una struttura in un formato come {100,200}
è legale dove gli elementi all'interno di quell'array sono solo campi.
C'è un motivo per cui non devi farlo per {10,20}, {30,40} e {50,60}? Mi fa incazzare. Tecnicamente stai ancora assegnando quei valori al valore di quegli indici nell'array – committedandroider
Perché il costrutto sopra è disponibile solo per l'inizializzazione. In 'pt [0] = (Punto) {100,200};', stai creando un 'Punto' temp e assegnandolo a' pt [0] '. Devi dire al compilatore se '{100, 200}' è un 'Point' o' int [2] 'o qualcos'altro. –
ma questa non potrebbe essere una logica simile in quanto si sta creando anche un punto temporaneo {10,20} e lo si memorizza come valore del primo indice dell'array? – committedandroider