前面我们已经学习过结构指针和结构数组的概念,我们知道可以用指针访问和引用数组,由此可知也可以用指针访问结构数组。即一个指针变量可以访问普通的数组,也可以访问结构数组。
typedef struct student
{
char ID[10];
char name;
char sex;
float score;
}STUDENT;
STUDENT stu[30] = {
{"202001","张三",'M',85},
{"202002","李四",'M',90},
{"202003","王五",'M',95},
{"202004","赵六",'F',100}
};
如上述程序,已经声明了一个具有30个元素的结构数组stu,则定义一个结构指针p并将其指向结构数组stu首元素的方法为:STUDENT *p = stu;或者STUDENT *p; p = &stu[0];//p保存的是stu[0]的地址,故p指向stu的第一个元素stu[0]的首地址。因此,可以用指向运算符来引用此结构成员。p->name即stu[0].name,而p+1指向stu[1],以此类推。
如果p的初值为指向数组的首元素,则p增1后p指向下一个元素的起始地址