.. _lang-pointer:

Pointer Operators (``&``, ``*``)
================================

The pointer operators ``&`` (reference) and ``*`` (dereference) are
different from the bitwise math operator :ref:`&
<lang-bitwisemath-and>` and the arithmetic operator :ref:`*
<lang-arithmetic>`.

Pointers are one of the more complicated subjects for beginners in
learning C, and it is possible to write many useful Arduino sketches
without ever encountering pointers. However, for manipulating certain
data structures, the use of pointers can simplify the code, improve
its efficiency, and generally provide many benefits that would be
difficult to achieve without the use of pointers.

Introducing pointers is somewhat outside the scope of this
documentation.  However, a good `pointer tutorial
<http://www.cplusplus.com/doc/tutorial/pointers/>`_ is available.
Also see the `Wikipedia article on pointers
<http://en.wikipedia.org/wiki/Pointer_%28computing%29>`_, especially
the section on `pointers in C
<http://en.wikipedia.org/wiki/Pointer_%28computing%29#C_pointers>`_.

See Also
--------

- http://xkcd.com/138/

.. include:: cc-attribution.txt
