结构体指针中什么时候用.什么时候用->
时间: 2023-10-11 18:13:10 浏览: 58
在使用结构体指针访问结构体成员时,使用`.`和`->`的规则如下:
1. 如果你有一个结构体变量,可以直接使用`.`来访问结构体的成员,例如 `s.name`。
2. 如果你有一个指向结构体的指针,需要使用`->`来访问结构体的成员,例如 `ptr->name`。
这是因为`.`运算符用于直接访问结构体变量的成员,而`->`运算符用于通过指针访问结构体的成员。
例如,在上面的示例代码中,我们定义了一个指向结构体数组`s`的指针`ptr`。当我们使用指针访问结构体成员时,需要使用`->`运算符,如`ptr->name`、`ptr->age`和`ptr->score`。这是因为`ptr`是一个指针,需要通过`->`来间接访问结构体成员。
当我们直接访问结构体变量`s[i]`的成员时,应使用`.`运算符,如`s[i].name`、`s[i].age`和`s[i].score`。这是因为`s[i]`是一个结构体变量,可以直接通过`.`来访问其成员。
总而言之,当你有一个结构体变量时,使用`.`;当你有一个指向结构体的指针时,使用`->`。
相关问题
c语言结构体什么时候用->,什么时候用.
在C语言中,结构体变量可以通过"."或"->"来访问其成员变量。其中,"."是用于访问结构体变量的成员变量的运算符,而"->"是用于访问结构体指针变量的成员变量的运算符。
使用"."操作符来访问结构体变量的成员变量,例如:
```
struct student {
char name[20];
int age;
};
struct student s1;
s1.age = 18;
```
使用"->"操作符来访问结构体指针变量的成员变量,例如:
```
struct student {
char name[20];
int age;
};
struct student *ps;
ps = (struct student *)malloc(sizeof(struct student));
ps->age = 18;
```
需要注意的是,如果结构体变量是一个指针,则必须使用"->"操作符来访问其成员变量。如果结构体变量是一个非指针变量,则必须使用"."操作符来访问其成员变量。
结构体指针什么时候用箭头
结构体指针用箭头(->)的时候,是为了访问结构体指针所指向的结构体中的成员。如果使用点号(.)来访问结构体指针所指向的结构体中的成员,则会出现编译错误。
例如,假设有以下定义的结构体和结构体指针:
```
struct Person {
char name[20];
int age;
};
struct Person *p = malloc(sizeof(struct Person));
```
要访问结构体指针 p 所指向的结构体中的成员,可以使用以下两种方式:
1. 使用箭头(->):
```
strcpy(p->name, "John");
p->age = 30;
```
2. 先解引用结构体指针再使用点号(.):
```
strcpy((*p).name, "John");
(*p).age = 30;
```
但是使用箭头更加简洁和方便。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)