我在一段時間內沒有使用過C,現在我試圖回到它。在指針上使用成員訪問操作符
我的問題是,我的代碼實際上工作,雖然我確信我會得到語法錯誤。他是我想要的: 多邊形的動態陣列,每個都有一個動態的點陣列。
我會對其進行初始化多邊形的數組:
struct polygon* poly_array = (struct polygon*) malloc(sizeof(struct polygon)*num);
而且,初始化每個多邊形的點陣列:
poly_array[i].quantity = points;
poly_array[i].point_list = (struct point*) malloc (sizeof(struct point) * poly_array[i].quantity);
現在,我想我做的,是創建指向該對象的指針數組。因此,要訪問內部字段,我需要使用「 - >」運算符。不過沒有關係,它與「直接」訪問場(短版,沒有循環代碼):
poly_array[i].point_list[j].x = i;
poly_array[i].point_list[j].y = j;
,並打印:
printf ("poly %d: (%d, %d)\n", j, poly_array[i].point_list[j].x, poly_array[i].point_list[j].y);
因此,爲了清楚我的問題,我會再問一次:因爲我正在迭代指向對象的指針,我不應該使用->
運算符嗎?
您沒有創建指針數組,也沒有迭代指向對象的指針。也許你的意思是,但這不是你的代碼實際發生的。 –
'type-> field'只是對'(* type).field'的一個平等。它被使用,所以你不必顯式取消引用指向內部類型的指針。 – element11
不,你會使用多邊形 - > point_list [i] ...左手邊必須是一個指針,因此使用箭頭符號來提醒你! –