Source: http://www.emi.ac.ma/bouzoubaa/courses/C/Slides/Chapter6-IntroductionToC.pdf