The unary &, address, operator.
int foo, *bar;
bar = &foo; /* The pointer bar contains the address of foo. */
int foo, **bar;
bar = &(&foo); /* This is a meaningless statement */
int foo, *bar;
bar = &foo;
*bar = 5; /* Sets foo to the value 5 */
int foo, *bar, **baz;
bar = &foo;
baz = &bar;
*(*baz) = 5; /* Sets foo to the value 5 */
struct foo {
int member;
} inst, *ptr;
ptr = & int;
(*ptr).member = 2;
ptr->member = 3;
char *string;
long *ptr1, *ptr2;
if (ptr1 != ptr2); /* Compare two pointers of the same type */
if (0 == ptr1); /* Compare against 0. Same as if (ptr1) */
if (NULL == ptr1); /* NULL is defined as a pointer constant */
if (ptr1 == string); /* XXX Not allowed */