關於結構體型別的學習

shellingfordly發表於2019-07-25

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則錯誤;

相關文章