Что это означает «->» в c / target-c? - PullRequest
1 голос
/ 14 июня 2011

Я просматриваю некоторый код и наткнулся на синтаксис, значение которого я не знаю. Что означает «->»?

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

Ответы [ 7 ]

12 голосов
/ 14 июня 2011

Оператор стрелки ('->') используется в том же месте, в котором вы бы использовали оператор точки ('.'), Но с указателем на структуру вместо объекта этой структуры.

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

OfКонечно, все это обсуждение затрагивает гораздо больше тем, таких как указатели, куча и т. д. Надеюсь, это поможет.

3 голосов
/ 14 июня 2011

Символ -> используется для доступа к элементу типа указателя. Это то же самое, что разыменование указателя и использование оператора точки, т.е.

(*tv).pos = positionInPixels_;
2 голосов
/ 14 июня 2011

Используется для доступа к члену объекта / структуры, на которую указывает переменная.

Например, tv->pos используется для доступа к переменной-члену pos из объекта, на который указывает tv

1 голос
/ 14 июня 2011

"->" используется для доступа к элементу указателя структуры.В С по крайней мере ...

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


t_test    *foo;
/* Allocation and all the stuff */
foo->one = ...
foo->two = ...
1 голос
/ 14 июня 2011

-> используется для обозначения того же, что и точка (что означает доступ к члену структуры, класса или объединения), за исключением того, что -> используется, когда переменная является указателем.

0 голосов
/ 14 июня 2011

Хмммм, ты хотя бы подумал попытаться выяснить это для себя, прежде чем писать здесь? Это то, что я получил от операторов поиска ....

0 голосов
/ 14 июня 2011

Оператор стрелки (->) берет указатель структуры (в данном случае на transformValues_), разыменовывает его, а затем обращается к этой переменной-члену. IE: это равноденствия:

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