#include <stdio.h>

int main() {
    struct information{    //创建结构体来存储学生的信息
        int number;
        float C;
        float math;
        float english;
    }student,*p=&student;  //定义变量student并用指针p在指向
    scanf("%d;%f,%f,%f",&(*p).number,&p->C,&student.math,&p->english);
    printf("The each subject score of No. %d is %.2f, %.2f, %.2f.",p->number,p->C,p->math,p->english);
    return 0;
}

&(*p).number // 表示获取指针 p 所指向的结构体变量的 number 成员的地址。 注意输入先将指针解引用再取地址

&p->C // (*p).num=p->num

&student.math // 表示结构体变量的math成员的地址

以上三者等价

`&(*p).number` 表示获取指针 `p` 所指向的结构体变量的 `number` 成员的地址。

在C语言中,使用 `.` 运算符来访问结构体变量的成员,而使用 `->` 运算符来访问结构体指针所指向的结构体变量的成员。

因此,`p.number` 是错误的写法,应该使用 `p->number` 来访问结构体指针 `p` 所指向的结构体变量的 `number` 成员。

另外,`&` 运算符用于获取变量的地址,所以 `&(*p).number` 表示获取 `(*p).number` 的地址,即 `p` 所指向的结构体变量的 `number` 成员的地址。

#include <stdio.h>
struct student {
  int number;
};
int main() {
	struct student s;  // 定义结构体变量
	struct student *p = &s;  // 定义指向结构体的指针,并将其指向结构体变量
	printf("Please input the student number: ");
	scanf("%d", &p->number);  // 通过指针访问结构体成员,并将输入的值存储到成员中
	printf("The student number is: %d\n", p->number);
return 0;
}