TITLE: Pointer offsetting PROBLEM: Scott Amspoker (scott@bbx.basis.com) You can always hope the compiler will recognize what you're doing and generate an efficient 'add apointer,#offset' instruction. Another less obvious way is to do this: *(char**)&apointer += offset; RESPONSE: ??? In C++ when one is doing this kind of low-level hacking [which I agree is occasionally necessary] its useful to know the LHS reference casting trick, which is a one step equivalent to the C-trick of taking the address; casting that address to a new pointer type; and then dereferencing it. In C++ you just use a reference cast: typedef unsigned char* BytePtr; ... (BytePtr&)pointer += offset; which is usually a little cleaner and easier to read, especially when casting the type of a pointer. Such LHS reference casts are also frequently seen in downcasting or cross-casting MI objects.