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 ….