C Language Pointers Question
The * unary operator is called the dereference (or indirection) operator, and it dereferences a pointer to the value stored to where it points.

For example:

int main(){
    int a;
    int *b;

    a = 3;
    b = &amp;a;

    return (*b);
}


The function above would return the value 3.

The operator can also be cascaded. For example, *(*z). Here *z would return whatever value is stored in the location that z points to. In the case that z was pointing to a pointer (i.e. int **z = &amp;y and y is a pointer), then the second indirection would return the value at the location pointed to by the pointer that z points to (in this case, the value of y).

The &amp; unary operator is called the address-of operator. It's function is pretty self-explanatory:

int main(){
    int w;    // assume this is stored at 0x0000
    int x;    // assume this is stored at 0x0004
    int y;    // assume this is stored at 0x0008

    w = 3;
    x = w;
    y = &amp;x;

    ....


In this example, x == 3 and y == 4 (or y = 0x0004h).