A few points, but they fall into two classes.
1) existing knowledge - ask team mates, read documuntation (if any), wikis, comments in code, etc
2) tools - as @static_rtti said, use DoxyGen .. it's my personal first approach - it even works in in un-doxygen-ed code; it can show class structure, proc/fn call-tress, and more. How can that not help? My apporach to legacy/newly entered project code is always to run DoxyGen - and if there are no DoxyGen comments, I add them as I go along.
Maybe a good IDE with code/class browser that let's you jump to the definition of a variable or fn() and usages too.
Maybe try some of thos code-top-flowchart tools? That explains the logic.
But you also want to understand the data, so maybe fire it up in a debugger. If you run Linux, or can emulate your program in Linux using Wine, the I strongly recopmmend DDD. A picture is worth a thousand words - how useful could something like this be?