Oh, totally agreed. What I had difficulty with, specifically, was passing around a struct that contained a multidimensional array of a size determined at runtime.
I'm sure the problems I had could be solved by either a full re-design (not really an option), or accomplished by someone with more C experience.
i.e. void myfunc(thing* stuff) { return; }
int main() { thing stuff; myfunc(&stuff); }