1. 定義結構體型別時,最後的分號一定不能忘;
struct st { int num; int s; //分號不能少 };
2. 關於結構體成員的獲取:
int main(void) { struct st a[3]; int i=0; scanf("%d",a); //輸入a[0].num的值 scanf("%d",&a->s); //a.s的值 scanf("%d",(a+1)); //a[1].num scanf("%d",&(a+1)->s); //a[1].s scanf("%d",&((*(a+2)).num)); //a[2].num scanf("%d",&a[2].s); //a[2].s printf("輸入結束"); for(i=0;i<3;i++){ printf("a[%d].num--%d; a[%d].s--%d\n",i,a[i].num,i,a[i].s); } }
- 對於一維陣列a[N]來說,a是陣列第一個元素的地址;
- 對二維陣列a[N][M]來說,a是第一排第一個元素的地址;
- 對於結構體型別陣列st a[N]來說,a是陣列中第一個元素的第一個成員的地址;
3. 成員獲取
- a第一個元素的num的地址;
- a->s表示第一個元素的s資料成員,加&()獲取其地址,&優先順序比->低,因此可以不用加();
- &(*(a+2)).num表示第三個元素的num的地址,因為“.”的優先順序比*的高,因此要括起來(*(a+2))num,若寫成*(a+2).num則錯誤;