结构体数组和结构体指针的应用,结构体成员引用的表示方法
//结构体数组和结构体指针的应用,结构体成员引用的表示方法
// Created by acer on 2020/8/30.
#include<stdio.h>
struct student{
int num;
char name[20];
char sex;
int age;
float score;
};
int main(){
// 定义结构体数组并初始化
struct student stu[3]={{11302,"wang",'F',20,483},
{11303,"Liu",'M',19,443},
};
struct student student1={11301,"fang",'M',21,485},*p,*q;
int i;
// *p指向结构体变量
p=&student1;
// 访问结构体变量
printf("%s,%c,%5.1f\n",(*p).name,p->sex,studengt.score);
q=stu; //q指向结构体数组元素
// 循环访问结构体数组的元素(下标变量)
for (i = 0; i<2 ; i++,q++) {
printf("%s,%c,%5.1f\n",q->name,q->sex,q->score);
}
return 0;
}
结果:
fang,M,485.0
wang,F,483.0
Liu,M,443.0
printf("%s,%c,%5.1f\n",(*p).name,p->sex,student.score);
由结果可见这三种表示方法含义是相同的。
成员变量引用的方式有:
- 运用成员域访问运算符:<结构体变量名>.成员名,student.score;
- 利用间接访问成员域的运算符:指针变量->成员,如p->sex;
- 利用结构体指针变量访问结构体变量的成员:(*结构体指针变量名).成员名。如(*p).name;
容易混淆:
输入数据的时候,姓名是字符串不用加&!!!,但是年龄,分数,性别要加。
如:
scanf("%s,%c,%d",p->name,&p->sex,&p->age);