Live data from Hacker News

Ask HN: An Advanced C Tutorial

news.ycombinator.com

1–10 of 19 posts

Ask HN: An Advanced C Tutorial

#1
Can any one point me to an Advanced C tutorial?

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).

Thus now I wish to learn C really in depth!, this is partly by ongoing discussion about C++ which I can clearly identify with.

Re: Ask HN: An Advanced C Tutorial

#4
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?

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.

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.

Re: Ask HN: An Advanced C Tutorial

#5
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.

For the pearls... well I can give you a couple: - sizeof() macro is a good friend - ISO C99 introduces Exact-width integer types http://en.wikipedia.org/wiki/Stdint.h

Re: Ask HN: An Advanced C Tutorial

#6
post #3

The C Programming Language (aka K&R) http://en.wikipedia.org/wiki/The_C_Programming_Language_(boo...

This. This remains the most concise and to-the-point programming book I have -ever- read. It bothers me some that people (myself included) keep writing 900 page programming books when this can do nearly the same in 200.

Once you're done with that, pick up one of the W. Richard Stevens (RIP) books — Advanced Programming in the Unix environment, or Unix Network Programming (Vol i/ii) if you're into networks. They'll teach you the basics of so much operating system stuff (it'll be Unix, but the core concepts will apply to any modern OS) you'll be growing a long unkempt beard and wearing sandals/suspenders in no time.

Re: Ask HN: An Advanced C Tutorial

#8
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.

I guess the more difficult part will be to transition from object oriented to procedural paradigm.

Re: Ask HN: An Advanced C Tutorial

#9
post #4

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? 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. I would recommend reading the "C Interfaces and Implementations" book by David Hanson. Another book that…

I understand how pointers, Iterators etc work, I know several algorithms from binary search to SVD. I also have very good knowledge of IA 32.

"learning it in depth" includes learning arcane rules, such as what constitutes undefined behavior, what names are reserved, etc.

That's what I exactly want to learn. Esp how to optimize for memory management and pthreads and stuff.

Re: Ask HN: An Advanced C Tutorial

#10

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. For the pearls... well I can give you a couple: - sizeof() macro is a good friend - ISO C99 introduces Exact-width integer types http://en.wikipedia.org/wiki/Stdint.h

thanks for the tips!

One interesting use of sizeof i remember in my C++ project was to override new and delete operators where a void pointer is passed and sizeof is used to keep track of how much memory is allocated/deallocated.

Post reply on HN