C Programming
-
Basic Refreshers
- 1.1 C Hello World
- 1.2 Reading Input from the User
- 1.3 Basic C Data Types
- 1.4 Character Data Type
- 1.5 Character Escape Sequences
- 1.6 Integer Type Width Modifiers
- 1.7 Signed and Unsigned Integer Types
- 1.8 Integer Type Conversion
- 1.9 register Storage Class
- 1.10 Variable Scope Basics
- 1.11 Variable Lifetime and Storage Duration
- 1.12 Variable Initialization
- 1.13 Constants and Literals
- 1.14 Integer Constants and Bases
- 1.15 Floating-Point Data Types
- 1.16 Format Specifiers
- 1.17 Integer Format Specifiers
- 1.18 Floating-Point Format Specifiers
- 1.19 Character and String Format Specifiers
- 1.20 Comments and Whitespace
- 1.21 C Identifiers
- 1.22 C Keywords
- 1.23 Expressions and Statements Basics
- 1.24 Basic Type Qualifiers
- 1.25 Basic Storage-Class Specifiers
- 1.26 const Variables
- 1.27 Basic C Type Limits
- 1.28 Basic Numeric Limits
- 1.29 Basic C Program Structure
- 1.30 Basic C Syntax Reference
-
Control Flow
- 2.1 if Statement
- 2.2 if-else Statement
- 2.3 Nested if Statements
- 2.4 else-if Ladder
- 2.5 switch Statement
- 2.6 case Labels
- 2.7 default Label
- 2.8 Fall-Through in switch
- 2.9 Nested switch Statements
- 2.10 Multiple case Labels in switch
- 2.11 while Loop
- 2.12 do-while Loop
- 2.13 while vs do-while
- 2.14 for Loop
- 2.15 Nested Loops
- 2.16 break Statement
- 2.17 Valid and Invalid Use of break and continue
- 2.18 goto Statement
- 2.19 continue Statement
- 2.20 Labels
-
Operators and Expressions
- 3.1 Arithmetic Operators
- 3.2 Increment Operator
- 3.3 Decrement Operator
- 3.4 Pre-Increment and Post-Increment
- 3.5 Pre-Decrement and Post-Decrement
- 3.6 Assignment Operator
- 3.7 Compound Assignment Operators
- 3.8 Relational Operators
- 3.9 Equality Operators
- 3.10 Logical AND
- 3.11 Logical OR
- 3.12 Logical NOT
- 3.13 Combining Logical Operators
- 3.14 Truth Value of Integer Expressions
- 3.15 Bitwise AND
- 3.16 Bitwise OR
- 3.17 Bitwise XOR
- 3.18 Bitwise NOT
- 3.19 Left Shift
- 3.20 Right Shift
- 3.21 Conditional / Ternary Operator
- 3.22 Comma Operator
- 3.23 sizeof Operator
- 3.24 Operator Precedence
- 3.25 Operator Associativity
- Type Conversion
-
Arrays
- 5.1 Array Declaration
- 5.2 Array Initialization
- 5.3 Accessing Array Elements
- 5.4 Reading Array Elements from the User
- 5.5 Array Element Addresses
- 5.6 Array Size
- 5.7 Copying Arrays
- 5.8 Array Assignment Restrictions
- 5.9 Array Bounds
- 5.10 Out-of-Bounds Array Access
- 5.11 Multidimensional Arrays
- 5.12 Two-Dimensional Array Initialization
- 5.13 Two-Dimensional Array Element Access
- 5.14 Two-Dimensional Array Addresses
- 5.15 Array of Pointers
- 5.16 Pointer to an Array
- 5.17 Array of Strings
- 5.18 Dynamically Allocated Two-Dimensional Arrays
-
Functions
- 6.1 Function Definition
- 6.2 Function Calls
- 6.3 Function Parameters
- 6.4 Function Return Values
- 6.5 Ignoring a Function Return Value
- 6.6 Function Prototypes
- 6.7 Function Declarations and Definitions
- 6.8 Passing Arguments by Value
- 6.9 Modifying Arguments Through Pointers
- 6.10 Passing Arrays to Functions
- 6.11 Passing Two-Dimensional Arrays to Functions
- 6.12 Returning Data from Functions
- 6.13 Returning Array-Related Data
- 6.14 Implicit Function Declarations
- 6.15 Explicit Function Declarations
- 6.16 Recursive Functions
- 6.17 Recursion and Base Conditions