C语言指针中,.和->的区别
时间: 2024-10-11 21:03:03 浏览: 57
在C语言中,`.`和`->`都是用来访问结构体变量成员的操作符,但它们有显著的不同:
1. `.`(句点操作符):当作用于非指向结构体或联合类型的指针时,`.`用于访问普通变量或对象的成员。例如:
```c
struct Person {
char name[20];
int age;
};
struct Person person;
person.name = "Alice";
```
在这里,`person.name`就是使用`.`操作符访问`name`字段。
2. `->`(箭头操作符):专门用于访问通过指针间接引用的结构体或联合类型的成员。当我们有一个指向结构体的指针时,如`struct Person *ptr;`,就可以用`->`来访问该结构体的成员,如下:
```c
struct Person *ptr = &person;
ptr->name = "Bob"; // 使用箭头操作符访问结构体成员
```
`ptr->name`等价于`(*ptr).name`,这里的`*`解引用指针,然后`.`再访问成员。
总结来说,`.`用于直接访问变量自身的成员,而`->`用于通过指针访问结构体或联合的成员。记住,只有当左侧是实际的指针或已解引用的指针时,才能使用`->`。
阅读全文