Overview
The C programming language is perhaps the most popular programming language for programming embedded systems.
Course Outline
Introduction
- ANSI Standard
- Fundamentals of C
- Datatypes and Constants
- Simple & Formatted I/O
- Memory Usage
- Operators & Expressions
- Flow Control
- Loops
Functions
- Role of Functions
- Pass by value / reference
- Returning values from Functions
- Recursive Functions
- Call Back Functions
- Implications on Stack
- Library Vs User defined function
- Passing variable number of arguments
Arrays
- Defining, initializing and using arrays
- Multi Dimensional Arrays
- Arrays of Characters and Strings
- Arrays and Pointers
- Passing arrays to functions
- String handling with and without library functions
Storage Classes
- Scope and Life
- Automatic, Static, External, Register
- Memory(CPU / RAM)
Structures & Unions
- What structures are for
- Declaration, initialization
- Accessing like objects
- Nested Structures
- Array of Structures
- Passing structures through functions
- Allocation of memory and holes
- Structure Comparison
- Structure bit operation
- Typedef for portability
- Unions
- Overlapping members
Enumerated data types
- Enum, Indexing, enum Vs #define
Bit Operations
- AND ( & ), OR ( | ), XOR ( ^ )
- Compliment ( ~ )
- Left-Shift ( << ), Right Shift ( >> )
- Masking, Setting, Clearing and Testing of Bit / Bits
Pointers
- The purpose of pointers
- Defining pointers
- The & and * operators
- Pointer Assignment
- Pointer Arithmetic
- Multiple indirections
- Advanced pointer types
- Generic and Null Pointer
- Function Pointers
- Pointers to Arrays and Strings
- Array of Pointers
- Pointers to Structure and Union
- Pointers to Dynamic memory
- Far, Near and Huge Pointers
- Pointer Type Casting
Dynamic Memory Allocation
- Malloc(), Calloc(), Realloc(), Free()
- Farmalloc(), Farcalloc()
File Handling Concepts
- Concept of a FILE data type
- Inode, FILE structure
- File pointer
- Character handling routines
- Formatted Data Routines
- Raw data Routines
- Random Access to FILE
Command line Arguments
- Argc, argv
- Variable Inputs to the main
Compiler in Practical
- Preprocessor Directives
- Compiler, Assembler, Linker
- Conditional Compilation
- Multiple File Compilation
- Code Optimization techniques
- Volatile, #pragma
Data Structures
- Linear & non-linear
- Homogeneous & non-homogeneous
- Static & Dynamic
- Single, Double & Circular Linked Lists
- Stacks & Queues
- Binary Trees
Sorting and Searching Techniques
- Insertion, Selection, Bubble, Merge, Quick, Heap
Concepts and Real-time Exposure
- Development Tools and Environment
- Make Utility
- Industry Coding Standards
- Object / Executable File Format
- Debugger