C is the modern assembly language for many architectures, and still the
most useful computer language for me. C does not have a rigid grammar
and has a lot of variants and local dialects, and have revised a few
times including the old UNIX C, ANSI C 1989 which first introduced
prototypes, and C99.
Finding out the de-facto standard elements of C is a complicated work.
You can find a bunch of different indentation and
writing styles on C code. I do not recommend a specific coding style in
this article; I can only recommend you need to follow the mainstream
style when working in a project.
Sometimes you have to read the books for discovering what is the most right thing to do.
I recommend following books for C programming now:
For practical programming, however, depending on books is not enough.
Actually those books I recommended above are 5 to 7 years old as of
2009, so if you want to know the cutting-edge details of programming,
you should read the latest software. Consulting a C compiler manual and
well-written source code such as that of BSD kernels is a must if you
want to write an efficient code (those are freely available).
One thing to which you've got to pay special attention is that books
are
eventually but surely getting outdated. Books are not the
Web articles; they are static and will not change. The lifespan of a
reference book for computer science is typically very short these days,
due to the rapid change of technologies. Books about C is not an
exception either.
And I should confess that a few days ago I decided to sell the following
old worn-out books because I found out them simply outdated (and
I
no longer recommend the following two books any more):
The reason that I found them outdated were as follows:
- They are old, written in approx. 20 years ago, and they do not
reflect the changes of C99 and other additional elements;
- Not mentioning secure programming at all, including
- avoiding reference to non-existent data objects,
- preventing buffer overflows,
- limiting the length of a string;
and
- The C library structure and source have been changed a lot for these 20 years.
Frankly speaking, I loved those old books, especially which I referred
to the most during my apprentice time of learning the language in the
late 1980s. Those books were the only source before the Web. I had to
repeatedly read the old bestsellers many times to discover the details.
I do respect the authors of those books. They are pioneers of UNIX and C programming.
Nothing is eternal, however; and I suggest use to stop using outdated
reference books ASAP for every subject, not only for programming.