在知道结构体指针之前需要知道以下内容;
指针 == 地址
指针变量 == 存放地址的变量
结构体也是变量
变量的访问方式有两种 1. 变量名 2. 地址
struct Test
{
int idata;
char cdata;
};
int a;
int *p;
p = &a;
struct Test t1 = {10, 'c'};
struct Test *ps = &t1;
printf("t1的idata=%d\n", t1.idata); // t1的idata=10
printf("t1的idata=%d\n", ps->idata); // t1的idata=10
ps->cdata = 'd';
printf("t1的cdata=%c\n", t1.cdata); // t1的cdata=d
printf("t1的cdata=%c\n", ps->cdata); // t1的cdata=d
但是如果你在循环里面指针发生了偏移,在下一个循环之前需要重新让指针指向开始的位置
struct XuanMin
{
char name[32];
int tickets;
}
struct XuanMin xm[3];
for(int i = 0; i < len; i++){
p->tickets = 0;
printf("请输入第%d个人名字\n", i + 1);
scanf("%s", p->name);
p++; // 这里指针发生了偏移
}
p = xm; // 让指针重新指向数组头
for(int i = 0; i < len; i++){
printf("名字:%s, 票数:%d\n", p->name, p->tickets);
p++;
}
// 同理,如果你下面还要用到这个指针,则需要 p = xm;
总结:
以前需要用 . 运算符访问的,可以改成结构体指针(->)访问
如果指针++了,