John Bode said:
I have studied C language for just 2~3 months.
I'd like to know the critical parts of C, focusing on these.
All parts of the language are equally important; [...]
That statement is absurd. Consider the basic types, such as int
and char. They are used in every C program, so they are
important. Now consider bit-fields. They are not used in many C
programs. Thus, bit-fields are less important than the basic
types.
Frankly, I disagree with your viewpoint. It is impossible to define
the most important parts of the C language/library without specifying
a problem domain. C is so widely used, from low level and system
programming to large, complex applications that would often be better
programmed in a different language.
Some of the code you've done and made public, on the web and in C
Unleashed, makes extensive use of dynamic memory. To you, malloc(),
calloc(), realloc(), and free() are probably far more important than
bit-fields.
On the other hand, almost all of my C programming is in
safety-critical real time embedded systems, where dynamic allocation
is never used. Most of these systems use integer math only, no
floating point at all. And the smaller ones often have severe memory
constraints.
So I use bit-fields much more than I use malloc() and friends, and
even quite a bit more than I use float, double, and long double.
For my work, bit-fields are much more important than the floating
point basic types, at least, and also more so than large portions of
the standard library.