1、指向不同一般情况下用“.”,只需要声明一个结构体。格式是,结构体类型名+结构体名。然后用结构体名加“.”加域名就可以引用域 了。因为自动分配了结构体的内存。如同 int a;一样。而用“-”,则要声明一个结...
1、指向不同
一般情况下用“.”,只需要声明一个结构体。格式是,结构体类型名+结构体名。然后用结构体名加“.”加域名就可以引用域 了。因为自动分配了结构体的内存。如同 int a;一样。
而用“->”,则要声明一个结构体的指针,还要手动开辟一个该结构体的内存,然后把返回的指针给声明的结构体指针,才能用“->”正确引用。
否则内存中只分配了指针的内存,没有分配结构体的内存,导致想要的结构体实际上是不存在。这时候用“->”引用自然出错了,因为没有结构体,自然没有结构体的域了。
2、读法不同
(*a).b 等价于 a->b。"."一般情况下读作"的”,他的前面是结构体。
“->”一般读作"指向的结构体的",其前面一定要是一个指向结构体的指针。
3、作用的不同
在“结构”一单元中出现的->运算符成为“右箭头选择”,在使用中可以用new_node->value = 10;来代替(*new_code).value = 10;
也就是说在结构中,运算符->是运算符*和运算符.的结合,在上述语句中,他先对new_node间接寻址以定位所指向的结构,然后再选择结构的成员value。
总结,如果只是定义一个结构体,用.来进行访问结构体中的成员。而如果定义了一个结构体指针,并已经分配了空间,则需要用->来访问其成员。
例子:
sturct s{
int data;
};
struct s t1;
t1.data=1;
struct s *t2;
t2=(struct s*)malloc(sizeof(struct s));
t2=&t1;
t2->data=1;
本文参考自以下两篇文章。
https://blog.csdn.net/Clown_pan/article/details/90339915
https://zhidao.baidu.com/question/118239934.html
本文标题为:C语言中 . 与->的区别
- ubuntu下C/C++获取剩余内存 2023-09-18
- 我应该为我的项目使用相对包含路径,还是将包含目录放在包含路径上? 2022-10-30
- 详解C语言中sizeof如何在自定义函数中正常工作 2023-04-09
- C++ 数据结构超详细讲解顺序表 2023-03-25
- C语言详解float类型在内存中的存储方式 2023-03-27
- C语言qsort()函数的使用方法详解 2023-04-26
- C语言手把手带你掌握带头双向循环链表 2023-04-03
- Easyx实现扫雷游戏 2023-02-06
- Qt计时器使用方法详解 2023-05-30
- c++ const 成员函数,返回一个 const 指针.但是返回的指针是什么类型的 const? 2022-10-11
