请教:->与.的区别 我觉得差不多吧
->是指针A.a=1;
A->a=1:
不是一样的吗? 前A为结构, 后A为结构指针. 回去重新学C. cp为指向结构体的指针 (*cp).a 等价于cp->a 《C和指针》198页有讲到 tdchenke 发表于 2014-3-15 18:30
cp为指向结构体的指针 (*cp).a 等价于cp->a 《C和指针》198页有讲到
我一个程序里面有这么一条:
CurrentMenuNode=(*CurrentMenuNode).Next_Node;
基本意思可以用文字表达一下
当前菜单节点(指针型)=当前菜单节点(已经指向了实际变量的地址).下一个节点的(地址)
然后上面的语句也可以表达为:
CurrentMenuNode=CurrentMenuNode->Next_Node;
综合来讲,加上*,直接指向了实际变量地址 而后 进行操作
不加上*,就是一个指针,加上->,同样也指向了 实际的变量里面了。
第一句的意思是 指针结构,指向的地址,取里面的一个元素
第二句的意思是 结构,结构中的内容为指针,把指针指向另一个结构中,并取其中的一个元素。 为结构体变量是用“.”,为结构体指针时用“->” 在C中,.和->代表的含义其实是一样的,->只不过是(* xxx).的简写而已,区别仅仅是一个作用于指针,另一个作用于指针指向的值。
但是在C++中,中间的差异非常明显。因为.无法重载,而->和*都是可以重载的,重载后的行为可能非常有意思。
举个好玩的例子:struct CA{
int a;
inline CA* operator ->(){ // 重载->,注意是要作用到值哦,不是指针。
return this;
}
};
CA A;
A.a = 1;
(&A)->a = 1;
A->a = 1;上面最后三行在优化后编译出来的代码完全一样,但是意义并不一样哦。 本帖最后由 菜鸟很热心 于 2014-3-17 16:49 编辑
看看吧,支持一个 一个为结构体变量是用“.”,一个为结构体指针时用“->”,在引用变量,"."和“->”是一样的。在指针引用时,只能用“->”,不然会出错 我记得把keil和程序移植到IAR的时候,某些地方的 .需要改成 ->(或是-> 改成 . 具体忘记了是哪个改哪个) .是用于取结构体变量的成员。而->是用于取结构体指针的成员。 支持一个
页:
[1]