> For the complete documentation index, see [llms.txt](https://xiaoxiami.gitbook.io/c/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://xiaoxiami.gitbook.io/c/jie-gou-ti/fang-wen-fu-yi-si.md).

# -> 访问符意思

`->`在C语言中称为间接引用运算符，是二目运算符，优先级同成员运算符“.”搜索。

**用法**：

`p->a`，其中p是指向一个结构体的指针，a是这个结构体类型的一个成员。表达式`p->a`引用了指针p指向的结构体的成员a。

例如：

```c
struct T
{
 int a;
 char b;
}s;

struct T *p=&s;
```

那么，

\`p->a\`相当于\`s.a\`。

显然，有个等价写法：`(*p).a`，和`p->a`完全等效。

```c
#include <stdio.h>
int main(){
    struct{
        char *name;  //姓名
        int num;  //学号
        int age;  //年龄
        char group;  //所在小组
        float score;  //成绩
    } stu1 = { "Tom", 12, 18, 'A', 136.5 }, *pstu = &stu1;

    //读取结构体成员的值
    printf("%s的学号是%d，年龄是%d，在%c组，今年的成绩是%.1f！\n", (*pstu).name, (*pstu).num, (*pstu).age, (*pstu).group, (*pstu).score);
    printf("%s的学号是%d，年龄是%d，在%c组，今年的成绩是%.1f！\n", pstu->name, pstu->num, pstu->age, pstu->group, pstu->score);

    return 0;
}
```

运行结果：

```
Tom的学号是12，年龄是18，在A组，今年的成绩是136.5！
Tom的学号是12，年龄是18，在A组，今年的成绩是136.5！
```
