2 * - dereference or indirection operator
13 When used as a binary operator, '*' performs multiplication. When
14 used as a operator, '*' returns the value at a given address.
16 If X is an address, *X returns the value at that address. This value
17 will be an octet, lvalue, string, or number, depending on the
18 type of address. Thus, for any addressable A, *&A is the same as A.
20 If X is an lvalue, *X returns the current value at the address
21 considered to be specified by X. This value may be an lvalue or
22 octet, in which cases, for most operations except when X is the
23 destination of an assignment, *X will contribute the same as X to
24 the result of the operation. For example, if A and B are lvalues
25 whose current values are numbers, A + B, *A + B, A + *B and *A + *B
26 will all return the same result. However if C is an lvalue and A is
27 the result of the assignment A = &C, then A = B will assign the value
28 of B to A, *A = B will assign the value of B to C without affecting
31 If X is an lvalue whose current value is a structure (matrix, object,
32 list, or association), the value returned by *X is a copy of the
33 structure rather than the structure identified by X. For example,
34 suppose B has been created by
41 will assign the values 4,5,6 to the elements of a copy of B, which
42 will then become the value of A, so that the values of A and B will
43 be different. On the other hand,
47 will result in A and B having the same value.
49 If X is an octet, *X returns the value of that octet as a number.
51 The * operator may be iterated with suitable sequences of pointer-valued
52 lvalues. For example, after
58 **c returns the lvalue a; ***c returns the value of a.
63 > print *p, *(p + 1), *(p + 2)