These are classic reference books that you can use to understand c in depth.
'The C Programming language by Kernighan & Ritchie' is THE C reference
This is not the book for you if you're looking for a wordy introduction to C
It is a technical guide to the C language that is exact.
I have included it here as I think it is the best reference text book for C programming.
Note : It is not aimed at microcontroller programming but its information is just as applicable to microcontrollers as to programming PCs because the C language is standardized. The only information that is not relevant is where text is displayed on a screen using puts and printf (the microcontroller may not have a display!) - but you can attach a serial port if you need to.
There is no gentle introduction but this lets you zoom in on the information you need and it is not a huge Tome of information - it comes in at ~260 pages and is less ½ inch thick.
This book is not an introduction to C and it is not a beginners book do not buy it in the hope that it will teach you programming - it does show you good style and exactly how complex code works - but it is not for starting out.
You only need this book if you are really really interested in C programming and want to understanding the absolute fundamentals of writing C code but it is not light reading and it is not a teaching book.
It will however show you how to write a standard library functions in the correct way and maybe you will end up writing a few of the standard library functions yourself. This book gives you the actual code used to create library functions and shows you good techniques for making real code.
It tells you what the libraries are e.g. stdlib.h and exactly what standard
functions it should contain - microcontroller libraries may not contain the
same due to resource problems or processing power.
It is heavy going and has complex code in it - and after looking at a little of it you will understand why some functions are omitted from microcontroller libraries e.g. printf!
Jump from c programming to
Best Microcontroller Projects Home Page.
HMC5883L - How make a digital compass, Find out the differences between the HMC5883L and the QMC5883L and whether they are compatible.
Secrets of Arduino absolute value abs() - Why it might fail, Why it may cause problems...and how to fix it.
Arduino Analog Output: How to create the most accurate PWM analog ouput and how to create analog PWM sine waves.
Using the ACS758 to measure very high current
Arduino Voltage reference: Both the Uno and Nano have a built-in voltage reference: Find out how to make it more accurate. In addition find out how to use it to measure the supply voltage 1V8 ~ 5V5
Find out how digitalWrite() works...Now use 17x Faster macros!