1 . I N T R O D U C T I O N
Why this notes?
It is generally observed that few people know how much they
don’t know in C, that cause them waste enormous amount of
time debugging their C code for fixing core dumps, data
corruption, abnormal program behavior etc which they could
have avoided with better coding in C, in the first phase. Then
people move to computer programming from different
background, with non-uniform skills in fundamental Computer
Science that is vital to be an efficient C Programmer. Lastly C
depends on the underlying processor architecture,
ABI(Application binary interface specification), Language tools,
Operating System to get it’s job done for a program on a given
hardware- which cannot be explained in a C book completely.
Hence people think that C is vast topic to master, which is not
quite right, once you have the complete background to be a C
Programmer. This notes try to throw some lights on these loose
ends, and motivates the reader to gather more information on
different domains , as it progresses.
Before you proceed always remember that C is a short language
to finish reading out , but a vast language to understand very
very deep and at the bottom you will see its interaction with other
computer science domains , like operating systems , compilers ,
CPU architecture etc. So always be patient and be liberal in terms
of how much computer science you want to know more, to be a
master in C as a system programmer.
This article doesn’t cover C language domains in its entirety, this
is just a complementary notes on existing books on C. You also
need to refer your C manual for the specific
features/implementation of the C standard. That’s not covered
here to avoid duplication. Use this document as a directive to help
you understand your weak areas in C.
Please understand that this article is not meant for those who
don’t have a system programming background.
2 . D A T A T Y P E , C O N V E R S I O N S A N D E X P R E S S I O N S
A data type of an object indicates the number of bytes it takes to store
it , as you know. If it is signed type, the most significant bit of the most
significant byte is used to store that information. But when it comes to
arrays and functions and pointers, data type plays some role.