Can any one point me to an Advanced C tutorial?<p>I already know C++ quite in-depth but unfortunately never got to learn C. I was directly taught C++ in my high school, and then I went on to Matlab, Python, Java and finally advanced C++ (STL, why not to add default arguments in an overloaded virtual function, how virtual pointer table works and stuff).<p>Thus now I wish to learn C really in depth!, this is partly by ongoing discussion about C++ which I can clearly identify with.
Advanced C, C Traps and Pitfalls, and The Standard C Library.<p>Those are the classics.<p>C Interfaces and Implementations is over-recommended by people who haven't read it. It's a literate book that consists of heavily commented code. The comments distract from the prose and you're better off getting the library sources and jumping through it with ctags.<p>They faithfully address all of C's quirks. It's such a little language that most quirks lurk in the syntax and machine-specific parts, like storage classes, pointers, and its crappy little type system. But to master C fully you will need to learn some assembly and play with systems software. Try to replace libc with your own standard library and see how far you go.<p>Write something you care about in C. Small binary analysis utilities are a fun way; write an ELF parser or something. It excels in bit-manipulation. However, doing GUIs in C or processing strings would be an exercise in boredom.
The C Programming Language (aka K&R)<p><a href="http://en.wikipedia.org/wiki/The_C_Programming_Language_(book)" rel="nofollow">http://en.wikipedia.org/wiki/The_C_Programming_Language_(boo...</a>
You didn't tell us how well you learned C++. Do you understand pointers and how to manually build simple binary search trees and linked lists?<p>You see, C is a really small language and "learning it in depth" includes learning arcane rules, such as what constitutes undefined behavior, what names are reserved, etc.<p>I would recommend reading the "C Interfaces and Implementations" book by David Hanson. Another book that I'd recommend is "Expert C Programming (dark C secrets)" by van der Linden.
C is a simple language with some pearls and a lot of corner cases.
For the corner cases "C. Puzzle Book" by Alan R. Feuer it's a funny read with a lot of oh-oh moments.<p>For the pearls... well I can give you a couple:
- sizeof() macro is a good friend
- ISO C99 <stdint.h> introduces Exact-width integer types <a href="http://en.wikipedia.org/wiki/Stdint.h" rel="nofollow">http://en.wikipedia.org/wiki/Stdint.h</a>
My advice, First of all do not look for an <i>advanced</i> C tutorial.
Second, Go and grab a copy of Kernighan & Ritchie's C programming language book (commonly known as the KnR book).
Third, <i>Do</i> this book ... (yeah, don't just read it, do it).
If you know C++ in depth, you aleady know C at a professionally usable level, or at least get there with a couple of projects. C is a subset of C++ anyway. True, there are minor differences hera and there, but shouldn't really be deadly.<p>I guess the more difficult part will be to transition from object oriented to procedural paradigm.
another book online link
<a href="http://www.phy.duke.edu/~rgb/General/c_book/c_book/index.html" rel="nofollow">http://www.phy.duke.edu/~rgb/General/c_book/c_book/index.htm...</a>