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)
在C.
a->b
Run Code Online (Sandbox Code Playgroud)
是一个快捷方式
(*a).b
Run Code Online (Sandbox Code Playgroud)
用于解除引用指向的结构的成员.
这很有用,因为.绑定比解除引用运算符*更强.所以通过使用 - >你可以避免使用这些丑陋的括号.