Pointer operators

Table of contents

Overview

Carbon provides the following operators related to pointers:

  • & as a prefix unary operator takes the address of an object, forming a pointer to it.
  • * as a prefix unary operator dereferences a pointer.

Note that member access expressions include an -> form that implicitly performs a dereference in the same way as the * operator.

Details

The semantic details of pointer operators are collected in the main pointers design. The syntax and precedence details are covered here.

The syntax tries to remain as similar as possible to C++ pointer types as they are commonly written in code and are expected to be extremely common and a key anchor of syntactic similarity between the languages.

Precedence

These operators have high precedence. Only member access expressions can be used as an unparenthesized operand to them.

The two prefix operators & and * are generally above the other unary and binary operators and can appear inside them as unparenthesized operands. For the full details, see the precedence graph.

Alternatives considered

References