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};
}
Khi tôi làm pt[0] = {100, 200}
, trình biên dịch vẫn tiếp tục phàn nàn vềTại sao mảng biên dịch cấu trúc này không biên dịch?
error:expected expression before '{' token
tôi không thực sự nhận được rằng mặc dù. Không phải là biểu thức trước toán tử gán dấu {(=)?
Tôi không hiểu tại sao bài tập này lại là một vấn đề. giá trị tại địa chỉ pt là một mảng của điểm. Tôi chỉ cần thiết lập điểm thứ 0 là điểm mới này và tôi biết rằng việc gán một cấu trúc theo định dạng như {100,200}
là hợp pháp khi các phần tử bên trong mảng đó chỉ là các trường.
Có lý do nào bạn không phải thực hiện việc này cho {10,20}, {30,40} và {50,60} không? Điều đó khiến tôi đi lên. Về mặt kỹ thuật, bạn vẫn gán các giá trị đó cho giá trị tại các chỉ mục đó trong mảng – committedandroider
Vì cấu trúc trên chỉ có sẵn để khởi tạo. Trong 'pt [0] = (Điểm) {100,200};', bạn đang tạo một tạm thời 'Điểm 'và gán nó cho' pt [0] '. Bạn phải nói cho trình biên dịch biết '{100, 200}' là một 'điểm' hay' int [2] 'hay cái gì khác. –
nhưng điều này không thể là logic tương tự ở chỗ bạn cũng tạo ra một điểm tạm thời {10,20} và lưu trữ nó như là giá trị của chỉ mục đầu tiên trong mảng? – committedandroider