C语言中p->和(*p).的区别:结构体指针的访问
在 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 语言中结构体指针的使用。
原文地址: https://www.cveoy.top/t/topic/jD6Y 著作权归作者所有。请勿转载和采集!