区别
"."操作符
-
作用:当使用结构体名访问结构体成员时,需要使用".’
-
格式:
结构体名.结构体成员
-
案例:
struct Student{ int age; char name[20]; } int main() { struct Student s1 = {15,"zhangsan"}; struct Student* p1 = &s1; printf("年龄:%d,姓名:%s\n",s1.age , s1.name); // s1是结构体名,所以直接使用"."访问结构体成员 return; }
"->"操作符
-
作用:当使用结构体指针访问结构体成员时,可以使用“->”,也可以使用“.”
-
格式:
(*结构体指针).结构体成员
或结构体指针->结构体成员
-
案例:
struct student{ int age; char name[20]; } int main() { struct Student s1 = {15,"zhangsan"}; struct Student* p1 = &s1; printf("年龄:%d,姓名:%s\n",(*p1).age , (*p1).name); // p1是结构体指针,所以先解引用,在使用"."访问结构体成员 printf("年龄:%d,姓名:%s\n",p1->age , p1->name); // p1是结构体指针,所以也可以使用"->"访问结构体成员 return; }
梳理
- 如果拿到的变量是结构体本身,则直接可以使用“.”访问结构体成员。
- 如果拿到的是指向结构体的指针,则需要先
*p1
解引用,拿到指针指向的结构体本身,在使用“.”访问结构体成员。 - 有没有觉得步骤2先解引用,再取内容太麻烦。实际上,“p1->age”表示的就是先解引用,再取内容,可以理解为“获取指针p1指向的结构体中的age”。