Objective C中的" - >"是什么?

Aar*_*112 13 c pointers objective-c

我已经看到这个操作符在"在Mac上学习Objective C"的示例代码中弹出了很多次.

我相信它是Objective C继承的C语言的运算符.我尝试使用谷歌搜索和搜索Stack Overflow,奇怪的是没有出现.

它有英文名字吗?

Jac*_*kin 10

->特定于Objective-C的.这是一个C运营商.

现在已经清除,它是成员访问运算符,相当于指针取消引用,然后在结果上使用点运算符.

说你有struct这样的:

typedef struct Person {
   char *name;
} Person;

Person *jacob = malloc(1*sizeof(Person));
Run Code Online (Sandbox Code Playgroud)

所以这句话:

jacob->name = "Jacob";
Run Code Online (Sandbox Code Playgroud)

相当于这句话:

(*jacob).name = "Jacob";
Run Code Online (Sandbox Code Playgroud)

当然,不要忘记free:

free(jacob); 
Run Code Online (Sandbox Code Playgroud)


Dav*_*ong 10

它与结构有关.

当我们在堆栈上有本地可用的结构时,我们使用.运算符访问其成员.例如:

CGPoint p = CGPointMake(42,42);
NSLog(@"%f", p.x);
Run Code Online (Sandbox Code Playgroud)

但是,如果我们改为使用指向结构的指针,我们必须使用->运算符:

CGPoint *p = malloc(1*sizeof(CGPoint));
p->x = 42.0f;
NSLog(@"%f", p->x);
free(p);
Run Code Online (Sandbox Code Playgroud)

  • 我们没有,我们可以使用`(*p).x`代替. (4认同)

Nub*_*bok 9

在C.

a->b
Run Code Online (Sandbox Code Playgroud)

是一个快捷方式

(*a).b
Run Code Online (Sandbox Code Playgroud)

用于解除引用指向的结构的成员.

这很有用,因为.绑定比解除引用运算符*更强.所以通过使用 - >你可以避免使用这些丑陋的括号.


Mit*_*eat 5

它是一个成员选择(或访问)等效于指针de-reference(在注释中指出)

a->member等同(*a).member于C/C++