2011-06-14 57 views
1

我正在看一些代码,我遇到了一些我不知道其含义的语法。 ' - >'是什么意思?这是' - >'在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_; 
} 

回答

12

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

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; 
    } 

当然,所有这些讨论涉及到很多更多的话题,比如指针,堆等等。希望这有帮助。

3

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

(*tv).pos = positionInPixels_; 
0

箭头运算符( - >)取结构指针(对transformValues_在这种情况下),解除引用它,然后访问该构件变量。 IE:这些是equivelant:

​​3210
1

->用于表示同样的事情的点(这意味着访问的结构,类或联合的成员),不同之处在于->用于当可变是一个指针。

1

“ - >”用于访问结构指针元素。在C中至少...

typedef struct test { 
    int one; 
    int two; 
}    t_test; 


t_test *foo; 
/* Allocation and all the stuff */ 
foo->one = ... 
foo->two = ... 
2

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

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