怎么做
  1. 题面里的虚线方框就是要填的空
  2. 点候选项,它会填进当前高亮的那个空
  3. 点已填好的空,可以把选项取回来重选
  4. 全部填满后「提交」才会亮起
卡住了就点右下角的 👩‍🏫 问 AI 老师,她会给提示但不直接给答案。

结构体指针:箭头 -> 取成员

👁️ 26 人浏览 💬 0 人评论 ❤️ 添加收藏

p 里存的是卡片的地址;p->成员 = (*p).成员

p

a[0]

a[1]

小林 · 92
阿杰 · 85
→

p = a; p->name 是 a[0] 的 name

p++; p 指向下一张卡片 a[1]

指针也能指向一张结构体卡片。通过指针取成员有两种写法:

#include <stdio.h>

typedef struct {
    char name[20];
    int score;
} STU;

int main(void)
{
    STU s = {"小林", 80};
    STU *p = &s;              /* p 存的是 s 的地址 */
    p->score = p->score + 5;   /* 通过 p 改 s 的成绩 */
    s.score = s.score + 10;
    printf("%s %d\n", (*p).name, p->score);
    return 0;
}
  • STU *p = &s;:p 是「指向 STU 的指针」,里面存着 s 的地址。
  • (*p).score:先 *p 找到那张卡片,再用点号取成员。括号不能省:点号比 * 先算。
  • p->score:减号加大于号拼成的「箭头」,是 (*p).score 的简写,二级题里最常见。
  • 口诀:变量用点,指针用箭头。

程序输出【0】;p->score 和【1】完全等价;如果写成 *p.score,编译器会把它理解成【2】,编译出错。

请登录后作答。
去登录
👩‍🏫
AI
💬 题目评论
🔒 登录并作答后可看讨论