结构体中.和-> 有什么区别
时间: 2023-12-23 20:06:06 浏览: 37
在结构体中,"."用于访问结构体变量的成员,而"->"用于访问结构体变量的指针所指向的成员。
"."是用于直接访问结构体变量的成员,例如"结构体变量.成员名",其中的"结构体变量"是一个实际的结构体变量,而"成员名"是该结构体的一个成员。
"->"是用于访问结构体变量指针所指向的成员,例如"结构体指针->成员名",其中的"结构体指针"是指向结构体变量的指针,而"成员名"是该结构体的一个成员。
因此,如果你有一个结构体变量,可以使用"."来访问它的成员,但如果你有一个结构体指针,则必须使用"->"来访问它所指向的结构体的成员。
相关问题
c语言的结构体.和->
回答: 在C语言中,结构体的成员引用可以使用`.`和`->`两种方式。引用\[1\]中给出了一个结构体指针的定义示例,通过`->`符号可以方便地引用结构体指针所指向的结构体的成员变量。而引用\[2\]中的例子展示了使用`.`和`->`符号引用结构体成员变量的不同方式。使用`.`符号需要对结构体进行解引用,而使用`->`符号则可以直接引用结构体指针所指向的结构体的成员变量。引用\[3\]指出,结构体指针在C语言中被广泛使用,为了方便编程人员的使用,C语言提供了`->`符号来简化结构体成员的引用操作。
#### 引用[.reference_title]
- *1* [C语言结构体.和->](https://blog.csdn.net/dont_curry/article/details/104348116)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [C语言基础 --- 结构体中的.和->的区别与联系](https://blog.csdn.net/wit_732/article/details/120253187)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
c语言结构体中.与->的区别
在C语言中,结构体是一种用户自定义的数据类型,它可以包含多个不同类型的数据成员。在使用结构体变量的时候,我们需要使用“.”或“->”运算符来访问结构体成员。
“.”运算符用于访问结构体变量中的成员,而“->”运算符用于访问结构体指针变量中的成员。具体来说,如果我们有一个结构体变量a,其中包含成员x和y,我们可以使用a.x和a.y来访问这些成员。如果我们有一个指向结构体的指针变量p,我们可以使用p->x和p->y来访问结构体中的成员。
例如,假设我们有以下结构体:
```
struct Person {
char name[20];
int age;
};
```
如果我们定义一个结构体变量p1并给它赋值,我们可以使用“.”运算符来访问它的成员:
```
struct Person p1;
p1.age = 18;
```
如果我们定义一个指向结构体的指针变量p2,并为它分配内存,我们可以使用“->”运算符来访问它的成员:
```
struct Person *p2;
p2 = (struct Person*)malloc(sizeof(struct Person));
p2->age = 20;
```
需要注意的是,使用“->”运算符需要先将指针变量指向一个已经分配了内存的结构体,否则可能会导致程序崩溃。