->符号和结构体中的点引用有什么区别
时间: 2023-06-26 07:08:18 浏览: 64
->符号和结构体中的点引用都用于访问结构体成员,但是有一些区别。
->符号用于访问指向结构体的指针所指向的结构体的成员。这种符号通常在动态分配内存或者在函数中传递结构体指针时使用,因为这种方式可以在不拷贝整个结构体的情况下访问结构体成员,从而提高了效率。
例如,假设我们有一个结构体定义如下:
```
struct Person {
char name[20];
int age;
};
```
那么,如果我们定义一个指向该结构体的指针:
```
struct Person *p;
```
我们可以使用->符号来访问该结构体的成员:
```
p->age = 30;
```
点引用则用于直接访问结构体的成员。这种方式适用于我们已经有了结构体实例的情况,因为我们可以直接使用结构体的名称来访问其成员。
例如,如果我们有一个结构体实例:
```
struct Person person = {"Tom", 25};
```
我们可以使用点引用来访问该结构体的成员:
```
person.age = 30;
```
总之,->符号适用于访问指向结构体的指针所指向的结构体的成员,而点引用适用于直接访问结构体的成员。
相关问题
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 ]
attitude.roll和attitude->roll有什么区别
attitude.roll 和 attitude->roll 都是用于访问结构体中的 roll 属性的,不同点在于前者是使用点符号操作符来访问 roll 属性,而后者是使用指针符号操作符来访问 roll 属性。
如果 attitude 是一个结构体变量,那么使用点符号操作符来访问其属性比较方便。例如:
```
struct Attitude {
float roll;
float pitch;
float yaw;
};
Attitude myAttitude;
// 设置 roll 属性
myAttitude.roll = 0.5;
// 访问 roll 属性
float rollValue = myAttitude.roll;
```
如果 attitude 是一个指向结构体的指针,那么使用指针符号操作符来访问其属性比较方便。例如:
```
struct Attitude {
float roll;
float pitch;
float yaw;
};
Attitude* myAttitudePtr = new Attitude();
// 设置 roll 属性
myAttitudePtr->roll = 0.5;
// 访问 roll 属性
float rollValue = myAttitudePtr->roll;
```
在以上示例中,myAttitude.roll 和 myAttitudePtr->roll 都是访问 Attitude 结构体中的 roll 属性,但是使用指针符号操作符更加方便,因为我们不需要先解引用指针再使用点符号操作符来访问属性。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)