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.
How to use the TCS230 (/TCS3200) Color detector chip and easily add it to any of your projects.
How to use Arduino millis() for delays but still make the processor do work - Stop using delay()
The Essential Guide to the 74HC595; What it is and how you can easily use one in any of your projects.
Which pic programmer do you need? This page discusses PIC programmers and gives some essential information on choosing or building your own programmer.
learn how to use Arduino pulseIn and pulseInLong to get the most accurate pulse measurement on an Arduino.
This MCP23017 Interrupt tutorial shows you how to connect interrupt outputs from several MCP23017s to a single microcontroller interrupt pin.