5
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};
}
當我做pt[0] = {100, 200}
,編譯器不斷抱怨爲什麼不編譯這個結構體分配數組?
error:expected expression before '{' token
我真的不明白,雖然。 {token token operator(=)之前的表達式不是嗎?
我不明白爲什麼這項任務會成爲一個問題。地址pt處的值指的是一個Point數組。我只是將第0個點設置爲這個新點,我知道以{100,200}
這樣的格式分配一個結構是合法的,該數組內的元素只是字段。
您是否有理由不必爲{10,20},{30,40}和{50,60}執行此操作?那讓我trips。不安。從技術上講,您仍然將這些值分配給數組中這些索引的值 – committedandroider 2014-10-30 06:17:50
因爲上述構造僅可用於初始化。在'pt [0] =(Point){100,200};'中,你正在創建一個臨時的'Point'並將它分配給'pt [0]'。你必須告訴編譯器,「{100,200}」是一個「Point」還是「int [2]」或別的東西。 – 2014-10-30 06:19:52
但不能這是類似的邏輯,因爲你也創建一個臨時點{10,20},並將其存儲爲數組中的第一個索引的值? – committedandroider 2014-10-30 06:22:11