关于结构体类型的学习
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则错误;