Que signifie ce ‘->’ dans c / objective-c?

Je suis en train de regarder sur du code et je suis tombé sur une syntaxe dont je ne connais pas la signification. Que signifie le ‘->’?

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

L’opérateur de flèche (‘->’) est utilisé au même endroit que l’opérateur de point (‘.’), Mais avec un pointeur sur une structure au lieu d’un object de cette structure.

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

Si vous avez créé un object de cette structure, vous utiliseriez l’opérateur point pour accéder à ses membres:

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

Toutefois, si vous pointez sur une structure plutôt que sur la structure elle-même, vous ne pouvez utiliser que l’opérateur de flèche, ou un opérateur de point un peu plus complexe:

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

Comme je l’ai dit plus haut, vous pouvez toujours utiliser l’opérateur de points:

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

Bien sûr, toute cette discussion implique beaucoup plus de sujets, tels que les pointeurs, le tas, etc. J’espère que cela vous aidera.

Le symbole -> est utilisé pour accéder à un membre d’un type de pointeur. Cela revient à déréférencer le pointeur et à utiliser l’opérateur de point, c’est-à-dire

 (*tv).pos = positionInPixels_; 

Il est utilisé pour accéder à un membre d’un object / d’une structure pointé par une variable.

Par exemple, tv->pos est utilisé pour accéder à la variable membre pos partir de l’object pointé par tv

-> est utilisé pour signifier la même chose que le point (ce qui signifie accéder à un membre d’une structure, d’une classe ou d’une union), sauf que -> est utilisé lorsque la variable est un pointeur.

“->” est utilisé pour accéder à un élément de pointeur struct. En C au moins …

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

L’opérateur de flèche (->) prend un pointeur struct (vers un transformValues_ dans ce cas), le déréférence, puis accède à cette variable membre. IE: ceux-ci sont équivalents:

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

Hmmmm avez-vous au moins envisagé d’essayer de le découvrir vous-même avant de poster ici? C’est ce que j’ai obtenu en cherchant des opérateurs ….