If you worked through K&R’s book, this should probably be your next read. Peter van der Linden covers the naughty stuff. Why are arrays not always equal pointers? How does dynamic and static linking work? Why can you write unreadable code in C that actually makes sense? I think the name of one chapter sums this book up: It’s not a bug, it’s a language feature. If you want to call yourself a C programmer / software developer you should know this book in and out.