C语言结构体之结构体指针

在知道结构体指针之前需要知道以下内容;

  1. 指针 == 地址

  1. 指针变量 == 存放地址的变量

  1. 结构体也是变量

  1. 变量的访问方式有两种 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;

总结:

  1. 以前需要用 . 运算符访问的,可以改成结构体指针(->)访问

  1. 如果指针++了,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值