One last thing for now. Here's an example. We could get at any of these memory locations in several ways. The first example is basic dereferencing. The third example looks just like array access because it is.
All arrays are really just little pointers to a bunch of variables of the same type.
I'm not going to get too deep into this now, though. Finally, we need to be sure that we free up any space we reserve dynamically. Statically-allocated variables automatically free themselves. A regular variable declared inside a block is destroyed whenever the program leaves that block. Dynamically-allocated variables, on the other hand, stay around until the program stops running or until we explicitly relinquish their storage.