黑马程序员技术交流社区

标题: 求解"."和"->"到底有什么区别 [打印本页]

作者: Guardian_Angel    时间: 2014-5-25 00:22
标题: 求解"."和"->"到底有什么区别
本帖最后由 Guardian_Angel 于 2014-5-25 15:31 编辑

请问"."和“->”是不是可以互相替换使用,是不是意思都是一样的?
还有如果 有区别可以具体说一下吗?

作者: yangying514    时间: 2014-5-25 00:53
在OC中.是点方法中使用的,访问的是方法。而->是在对象指针在调用对象成员变量时用到的,例如p->age是直接访问p指针所指向的对象的age成员变量。这两个用法没有什么直接关系。我这两天也一直在看基础视频,讲的很清楚。
作者: m573555543    时间: 2014-5-25 05:33
.  是点语法,本质是方法调用而不是给成员变量赋值,它可以替代【】 。当系统遇到点语法的时候会自动转换成中括号【】里面的行为。比如说:
     i.age = 10;      可以自动转换成setter
    int a = i.age ;   系统自动转换成 getter

-> 是给成员变量赋值 ,比如说第一节课的  s->wheel = 2;
         在比如说 self -> wheel = 4 ;     等等

                        
作者: wanzhu159    时间: 2014-5-25 09:27
->是结构指针的一种用法,比如有个结构指针struct student *stu;  stu->结构的成员."."前面是变量或对象或类名(或其他名称)而"->"前面是地址、指针。.语法可以写成oc里面的[]形式,也就是方法的调用,既然是方法调用,那就可以在方法调用的时候封装东西例如监听一些其他属性的变化,干一些想干的事情。
作者: Guardian_Angel    时间: 2014-5-25 15:30
yangying514 发表于 2014-5-25 00:53
在OC中.是点方法中使用的,访问的是方法。而->是在对象指针在调用对象成员变量时用到的,例如p->age是直接 ...

哦哦哦~理解了  谢谢指点!
作者: Guardian_Angel    时间: 2014-5-25 15:32
wanzhu159 发表于 2014-5-25 09:27
->是结构指针的一种用法,比如有个结构指针struct student *stu;  stu->结构的成员."."前面是变量或对象或类 ...

额 ,懂了  原来以前一直搞混了!
作者: 251638256    时间: 2014-5-28 11:03
:(

C中

区别是前者一个是变量访问类或结构成员 后者访问一个是指针访问
作者: 夏沫的黄昏′    时间: 2014-5-28 19:54
这样说吧
你定义一个结构体
struct Node{
int x;
int y;
};
Node p1;
p1.x ; p1.y;
Node *p2;
p2->x; p2->y;
就用这个代码来解释吧  
当这个变量是指针变量的时候 如p2  获取p2的成员变量 或者成员函数 就需要用->
如果是 普通的变量的话 就用  “.”




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2