Pointers are just numbers, representing addresses in memory. You can add to and subtract from pointers, for instance. It is pretty easy to make mistakes with pointer math, however, and some times those sorts of bugs can be hard to catch, so be careful. Don't dereference pointers unless you know that the address is valid, and that you know what data type is at that memory address. With arrays, generally be careful. C/C++ does not check array bounds, and the problems with pointer math can occur with arrays as well, since arrays are just "syntactic sugar" barely covering up the underlying pointers.