because it behaves as High Level Language through Functions
it gives access to the low level memory through Pointers
support assembly level language.
C is often called a middle-level computer language as it combines the elements of high-level languages with the functionalism of assembly language.
High Level language :
A high-level programming language is a programming language that is more user-friendly, to some extent platform-independent, and abstract from low-level computer processor operations such as memory accesses.
Low Level Language :
A low-level programming language is a programming language that is more machine specific, and from computer processor operations such as memory accesses is directly dependent.