Header files are used to split a programmer's code into multiple independent files, and compile independently. Most of you are just learning to program in C, and hence your program will just be 1 file. But real programs, like say Linux source code, consists of thousands of files. Header files are a way of conveying relevant information from one portion of the code-base to another. They are also used when a programmer uses libraries created by someone else.