C is a general-purpose, high-level programming language that was developed in the early 1970s by Dennis Ritchie at Bell Labs. It is considered a "low-level" language because it provides a high degree of control over the computer's hardware and memory. C is often used for systems programming, such as operating systems, device drivers, and embedded systems. It is also widely used for developing applications, such as video games, financial software, and databases. Some of its key features include:
A simple and compact syntax that is easy to learn
Support for low-level operations, such as bit manipulation and pointer arithmetic
The ability to handle a wide range of data types
Support for a variety of programming paradigms, including structured, object-oriented, and functional programming
A large and active community that provides a wealth of resources and libraries for developers to use.
C++, C#, Java, JavaScript, and many other languages are influenced by C. C is a widely used and powerful language, it is also considered as the foundation of many modern programming languages.
Basics:
- C Language Introduction
- C Programming Language Standard
- int (1 sign bit + 31 data bits) keyword in C
- Is it fine to write “void main()” or “main()” in C/C++?
- Difference between “int main()” and “int main(void)” in C/C++?
- Macros and Preprocessors in C
- Compiling a C program:- Behind the Scenes
- Benefits of C over other languages
- Program error signals
- Escape sequences in C
- Line Slicing in C
- C/ C++ Tokens
Variable Declaration, Definition and Scope:
- Variables and Keywords in C
- How are variables scoped in C – Static or Dynamic?
- Scope rules in C
- How Linkers Resolve Multiply Defined Global Symbols?
- Quiz on Variable Declaration and Scope
- Complicated declarations in C
- Redeclaration of global variable in C
- Internal and External Linkage
- Declare variable as constant
- Why variables doesn’t start with numbers
- Redeclaration of global variables
- Initialization of global and static variables
Data Types:
- Data Types in C
- Use of bool in C
- Integer Promotions in C
- Quiz on Data Types in C
- Comparison of a float with a value in C
- Need of long data type in C
- size_t data type in C
- Interesting facts about data-types and modifiers
- Float and Double in C
- Character arithmetic in C
- Typecasting in C
Storage Classes:
- Storage Classes in C
- Static Variables in C
- Understanding “extern” keyword in C
- What are the default values of static variables in C?
- Understanding “volatile” qualifier in C
- Const Qualifier in C
- Initialization of static variables in C
- Understanding “register” keyword in C
- Quiz on Storage Classes in C
- Understanding volatile qualifier in C- Set 1
Input/Output:
- Returned values of printf() and scanf()
- What is return type of getchar(), fgetc() and getc() ?
- Scansets in C
- puts() vs printf() for printing a string
- What is use of %n in printf() ?
- How to print % using printf()?
- Quiz on Input Output in C
- Difference between printf, sprintf and fprintf?
- Difference between getc(), getchar(), getch() and getche()
- Difference between %d and %i format specifier
- Use of fflush(stdin) in C
- Clearing input buffer in C/C++
- scanf() and fscanf() in C
- getchar_unlocked() in C
- Problem with scanf()
- Differentiate printable and control character
- rand() and srand() in C/C++
Operators:
- Introduction to operators in C and Arithmetic Operators
- Relational and Logical Operators in C
- Bitwise Operators in C
- Operator Precedence and Associativity in C
- Evaluation order of operands
- Comma in C and C++
- sizeof operator in C
- Operands for sizeof operator
- A comma operator question
- Result of comma operator as l-value in C and C++
- Order of operands for logical operators
- Increment (Decrement) operators require L-value Expression
- Precedence of postfix ++ and prefix ++ in C/C++
- Modulus on Negative Numbers
- C/C++ Ternary Operator – Some Interesting Observations
- Pre-increment (or pre-decrement) in C++
- Difference between ++*p, *p++ and *++p
- Results of comparison operations in C and C++
- To find sum of two numbers without using any operator
- Sequence Points in C
- Execution of printf with ++ operators
- Anything written in sizeof() is never executed
- Difference between strlen() and sizeof()
- Stringizing and Token-pasting operator
Preprocessor:
- Write a C macro PRINT(x) which prints x
- Variable length arguments for Macros
- Multiline macros in C
- CRASH() macro – interpretation
- The OFFSETOF() macro,
- Branch prediction macros in GCC
- Diffference between #define and const in C?
- A C Programming Language Puzzle
- What’s difference between header files “stdio.h” and “stdlib.h” ?
- How to print a variable name in C?
- Constants in C
- How a Preprocessor works
- Preprocessor Directives : Behind the scene-1
- Preprocessor Directives : Behind the scene-2
- isgraph() library function
- write your own header file in C
- difftime() library function
- tmpnam() library function
- _Generic keyword in C
- math.h library functions
- typedef versus #define in C
- strftime() library function
- exec family of functions
Arrays & Strings:
- Introduction to Arrays in C Language
- Strings in C Language
- Properties of array in C Language
- Do not use sizeof for array parameters
- Initialization of variables sized arrays in C
- Are array members deeply copied?
- What is the difference between single quoted and double quoted declaration of char array?
- Initialization of a multidimensional arrays in C/C++
- Write one line functions for strcat() and strcmp()
- What’s difference between char s[] and char *s in C
- gets() is risky to use!
- C function to Swap strings,
- Storage for Strings in C
- Difference between array and pointer
- How to dynamically allocate a 2D array in C?
- How to pass a 2D array as a parameter in C?
- How to write long strings in Multi-lines C/C++?
- What are the data types for which it is not possible to create an array?
- Variable Length Arrays in C and C++
- Short hand array notation
- Accessing array out of bounds
- strcpy() in C/C++
- strcmp() in C/C++
- strdup() and strdndup() in C/C++
- Pass an array by value
- Reverse a string in C/C++
- strpbrk() in C
- strcoll() in C/C++
- ispunct() in C
- strspn() in C
- isalpha() and isdigit() in C/C++
Control Statements:
- What should be data type of case labels of switch statement in C?
- For Versus While
- A nested loop puzzle
- switch statement in C
- Difference between while(1) and while(0)
- goto statement
- Continue Statement
- Break Statement
- Using range in switch case