在 C 语言中,使用 'p->' 和 '(*p).' 访问结构体成员的区别在于 'p' 的类型。

如果 'p' 是一个指向结构体的指针,则可以使用 'p->' 来访问结构体成员;如果 'p' 是一个结构体类型的指针,则应该使用 '(*p).' 来访问结构体成员。

这是因为 '->' 运算符可以自动解引用指针并访问结构体成员,而 '.' 运算符需要先解引用指针再访问结构体成员。

例如,假设有以下结构体定义:

struct student {
    char name[20];
    int age;
};

若要访问结构体变量 's' 的成员 'name' 和 'age',可以使用以下方式:

struct student s = {'Tom', 18}; // 定义结构体变量 's' 并初始化
printf('%s %d\n', s.name, s.age); // 使用 's.' 访问结构体成员

而如果有一个指向结构体的指针 'p',可以使用以下方式访问结构体成员:

struct student *p = &s; // 定义指向结构体的指针 'p' 并初始化
printf('%s %d\n', p->name, p->age); // 使用 'p->' 访问结构体成员

*或者使用 '(p).' 访问结构体成员:

printf('%s %d\n', (*p).name, (*p).age); // 使用 '(*p).' 访问结构体成员

总结:

  • 当 'p' 是一个指向结构体的指针时,可以使用 'p->' 来访问结构体成员。
  • 当 'p' 是一个结构体类型的指针时,可以使用 '(*p).' 来访问结构体成员。

理解 'p->' 和 '(*p).' 的区别,可以帮助您更好地理解 C 语言中结构体指针的使用。

C语言中p->和(*p).的区别:结构体指针的访问

原文地址: https://www.cveoy.top/t/topic/jD6Y 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录