Note that C++ is statically typed so you can only assign a value to a variable of the same type. If a variable is of type int* then you can't assign an int to it (without casting). A variable of type T* is a pointer to type T. i.e. float* is a pointer to a float. The & in the above examples is the "address of" operator. If x is an int, then &x is the address of x, which is a pointer to x, which is of type int*.