I like to use dia to do the actual drawing of diagrams (UML or otherwise). And many of the UML features which apply to object-oriented programming apply to C as well: you still have data that is private, interfaces that are public, and dependencies between sections of your program. I can't suggest any reference in particular, but you should be able to take object-oriented ideas and adopt them to C. I guess it would help if you know an object-oriented language and so know what they're talking about.