# C++: -> Operator

The arrow operator, -> (that's a minus sign followed immediately by a greater than), dereferences a pointer to select a field. It is common to dynamically allocate structs, so this operator is commonly used. For example,

    struct Point {
        int x;
        int y;
    };

    Point* p;      // declare pointer to a Point struct

    p = new Point; // dynamically allocate a Point
    p->x = 12;  // set the field values.
    p->y = 34;

## The -> operator is convenient, but not necessary

There usual pointer dereference operator (*) and field selection operator (.) can be used to reference fields. The last two lines of the above example could be written as

    (*p).x = 12;  // set the field values.
    (*p).y = 34;

Note that the parentheses are needed to control the order of operator evaluation. Arrow is more commonly used than the *. combination because it's more readable.