这个’ – >’在c / objective-c中意味着什么?

我正在查看一些代码,我遇到了一些我不知道其含义的语法。 ‘ – >’是什么意思?

-(void) getTransformValues:(struct transformValues_*) tv { tv->pos = positionInPixels_; tv->scale.x = scaleX_; tv->scale.y = scaleY_; tv->rotation = rotation_; tv->skew.x = skewX_; tv->skew.y = skewY_; tv->ap = anchorPointInPixels_; tv->visible = visible_; } 

箭头操作符(’ – >’)用在与使用点运算符(’。’)相同的位置,但是使用指向结构的指针而不是该结构的对象。

 typedef struct _Person { char name[200]; unsigned int age; } Person; 

如果您创建了该结构的对象,则可以使用点运算符来访问其成员:

 int main() { Person p1; strcpy( p1.name, "Baltasar" ); p1.age = 36; } 

但是,如果您是指向结构的指针,而不是结构本身,则只能使用箭头运算符或更复杂的点运算符:

 int main() { Person p1; Person *ptrPerson = &p1; // ptrPerson points to p1 strcpy( ptrPerson->name, "Baltasar" ); ptrPerson->age = 36; } 

如上所述,您仍然可以使用点运算符:

  int main() { Person p1; Person *ptrPerson = &p1; // ptrPerson points to p1 strcpy( (*ptrPerson).name, "Baltasar" ); (*ptrPerson).age = 36; } 

当然,所有这些讨论都涉及更多主题,例如指针,堆等。希望这会有所帮助。

->符号用于访问指针类型的成员。 它与解除引用指针和使用点运算符相同,即

 (*tv).pos = positionInPixels_; 

它用于访问变量指向的对象/结构的成员。

例如, tv->pos用于从tv指向的对象访问成员变量pos

->用于表示与点相同的东西(表示访问结构,类或联合的成员),除了在变量是指针时使用->

“ – >”用于访问结构指针元素。 在C至少……

 typedef struct test { int one; int two; } t_test; t_test *foo; /* Allocation and all the stuff */ foo->one = ... foo->two = ... 

箭头运算符( – >)采用结构指针(在这种情况下为transformValues_),取消引用它,然后访问该成员变量。 IE:这些是公平的:

  (* tv).pos === tv->pos 

嗯,你至少考虑过在发布之前试图找出来吗? 这是我从搜索运营商那里得到的……