c语言结构体中.与->的区别
时间: 2024-05-07 09:22:18 浏览: 112
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;
```
需要注意的是,使用“->”运算符需要先将指针变量指向一个已经分配了内存的结构体,否则可能会导致程序崩溃。
阅读全文