c语言中 结构体里 ->和.的用法及区别
时间: 2023-11-27 19:54:22 浏览: 68
在C语言中,结构体是一种自定义的数据类型,可以将不同类型的变量组合成一个整体。结构体中的成员可以使用“.”和“->”来访问。
1. 使用“.”来访问结构体成员
使用“.”操作符可以直接访问结构体中的成员,例如:
```c
struct student {
char name[20];
int age;
};
struct student s;
s.age = 20;
strcpy(s.name, "Tom");
```
2. 使用“->”来访问结构体指针成员
而对于结构体指针,我们需要使用“->”操作符来访问结构体的成员,例如:
```c
struct student {
char name[20];
int age;
};
struct student *p;
p = (struct student *)malloc(sizeof(struct student));
p->age = 20;
strcpy(p->name, "Tom");
```
在这个例子中,我们使用了“->”操作符来访问结构体指针p所指向的结构体中的成员。
区别:
使用“.”操作符可以直接访问结构体中的成员,而“->”操作符则是用来访问结构体指针中的成员。因此,如果你要访问的是一个结构体变量中的成员,就应该使用“.”操作符;而如果你要访问的是一个结构体指针中的成员,就应该使用“->”操作符。
相关问题
c语言结构体用法->
C语言中,结构体是一种复合数据类型,它可以包含多个不同或相同类型的成员。这些成员可以通过"."运算符来访问。如果有一个指向结构体的指针,那么就不能直接使用"."运算符来访问结构体的成员。在这种情况下,应使用"->"运算符。
以下是结构体的定义和初始化的例子:
1. 结构体的定义
```c
struct Person {
char name[20];
int age;
float height;
};
```
2. 结构体的初始化
```c
struct Person p1 = {"Tom", 18, 1.75};
struct Person p2 = {.name="Jerry", .age=20, .height=1.80};
```
3. 结构体成员的访问
```c
struct Person p1 = {"Tom", 18, 1.75};
printf("%s\n", p1.name); // 访问并打印name成员
printf("%d\n", p1.age); // 访问并打印age成员
struct Person *ptr = &p1;
printf("%s\n", ptr->name); // 访问并打印name成员
printf("%d\n", ptr->age); // 访问并打印age成员
```
详细讲述一下c语言中.与->
在C语言中,`.`和`->`都是用来访问结构体或联合体成员的运算符。
`.`运算符用于访问结构体或联合体变量的成员,其用法如下:
```
struct my_struct {
int x;
int y;
};
struct my_struct s;
s.x = 10; // 使用`.`访问结构体成员x
s.y = 20; // 使用`.`访问结构体成员y
```
`->`运算符用于访问指向结构体或联合体的指针变量的成员,其用法如下:
```
struct my_struct {
int x;
int y;
};
struct my_struct *p;
p = malloc(sizeof(struct my_struct)); // 分配结构体内存
p->x = 10; // 使用`->`访问结构体成员x
p->y = 20; // 使用`->`访问结构体成员y
```
注意,`.`运算符只能用于结构体或联合体变量,而`->`运算符只能用于指向结构体或联合体的指针变量。此外,`->`运算符本质上是对指针进行解引用,因此等价于`(*p).x`和`(*p).y`。
相关推荐
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_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)