The Logic Behind C Header Files

If you are coming from modern languages like Java or C#, the separation of .h (header) and .c (source) files in C might seem confusing.