我在“在Mac上学习Objective C”中的示例代码中多次看到过这个操作符。
我相信它是C语言中的一个运算符,而Objective C继承了它。我试着用谷歌搜索和搜索Stack Overflow,奇怪的是什么也没找到。
它有英文名字吗?
发布于 2010-12-20 08:50:05
它与结构有关。
当一个结构在堆栈上本地可用时,我们使用.操作符访问它的成员。例如:
CGPoint p = CGPointMake(42,42);
NSLog(@"%f", p.x);然而,如果我们有一个指向结构的指针,我们必须使用->操作符:
CGPoint *p = malloc(1*sizeof(CGPoint));
p->x = 42.0f;
NSLog(@"%f", p->x);
free(p);发布于 2010-12-20 08:48:04
->是,而不是Objective-C特有的。这是一个C运算符。
现在清除了,它是成员访问运算符,相当于指针解引用,然后在结果上使用点运算符。
假设你有一个这样的struct:
typedef struct Person {
char *name;
} Person;
Person *jacob = malloc(1*sizeof(Person));所以这句话:
jacob->name = "Jacob";等同于以下语句:
(*jacob).name = "Jacob";当然,不要忘记free
free(jacob); 发布于 2010-12-20 08:50:53
在C中
a->b是一个快捷方式,
(*a).b它用于取消引用所指向的结构的成员。
这是很有用的,因为。绑定比取消引用运算符更强*。因此,通过使用->,您可以避免使用这些难看的括号。
https://stackoverflow.com/questions/4486048
复制相似问题