The C Programming Language
C is a fantastic programming language. With its blazingly fast performance and inherent simplicity, C is the perfect choice and de facto standard for low-level systems programming.
Last semester while I was formally learning the basics of C, I jotted down some notes about particular aspects of C, like an in-depth understanding of C's cryptic pointer syntax, and the difference between definition and declaration, linkage, etc.
Those notes are stored in a git repo on Gitee. You can refer to that repo yangqihang19/c-under-the-hood.
In my future study I am certain that at some point I will come back to study and use C further. Then I will probably polish my notes on C to make it more organized and systematic.
Recommendation of a few introductory C textbooks
-
Pointers on C: This book isn't that exceptional since it was written in the last century, with some outdated terminology and content. But the chapter on pointers did help me as I remember there were a few diagrams explaning the relationship between dereferencing, value categories, and the address of (
&) operator. With that, I was able to build the correct mental model for the value system in C. -
C Programming: A Modern Approach: This book is so far the best for C beginners. Overall, its content is up-to-date and very informative. Clear and engaging style of writing. It also features a separate Q & A section for each chapter.