Advanced C Programming

מק"ט: #6865 | משך קורס: 40 שעות אק'

'Advanced C' increases delegate's knowledge and understanding of the language, including the recent ISO 9899:1999 (C99) standard changes, and helps delegates to gain experience in areas of C that previous work may not have covered. Delegates will also be better equipped to write and maintain large C programs, and will also gain a better understanding of the way the language works and is implemented.

הקורס פעיל לקבוצות מטעם ארגונים בלבד, ניתן לשלוח פנייה רק אם מדובר בקבוצה
*שדות חובה


  • Read and write complex data declarations and type definitions
  • Use advanced pointer techniques to construct and work with complex data structures Use advanced standard library functions, including process control, searching and sorting
  • Handle memory allocation
  • Exploit features of C99

קהל יעד

This course is designed for the practising software developer and allows delegates to gain a better understanding of the language, run-time library, and software engineering techniques available with the C language.

תנאי קדם

  • Between three and six months of concentrated C programming experience Experience of structured data types
  • Experience of the declaration and use of pointers
  • The course will also benefit self-taught C programmers wishing to gain a formal education in the language.


C Standards

  • Review of C standards
  • K&R1 and STDC functions
  • C99 inline functions
  • Enumeration
  • const, volatile, Boolean, and floating point types
  • Limits

The Preprocessor

  • Predefined macros
  • Conditional compilation
  • Advanced directives (including assert)
  • Trigraphs and C99 digraphs
  • C99 Variadic macros



  • Reading and writing declarations
  • Using typedefs effectively
  • Using casts

Advanced Pointers

  • Levels of indirection
  • Void pointers
  • Defining and using function pointers
  • C99 restricted pointers

Advanced Arrays

  • Arrays and functions
  • Pointers and arrays
  • C99 Variable Length Arrays
  • memset

Arrays of Arrays

  • Declarations
  • Initialisation
  • Arrays of arrays as function arguments

Advanced Structures

  • Declaring and defining structures
  • C99 changes
  • Bitfields
  • Packing and padding
  • Reading and writing structs to files

Dynamic Memory Management

  • Allocating arrays
  • Allocating structures
  • Error detection and debugging techniques
  • Writing your own error detection library

Standard Library - Process Control

  • Running another process
  • Process termination
  • Exception handling (setjmp/longjmp)
  • Environment variables

Standard Library - Useful Functions

  • Calling conventions
  • Writing variadic functions
  • Date and time functions
  • Random numbers

Sorting and Searching

  • qsort
  • Comparison functions
  • Indirect sorting (pointers)
  • bsearch

Linked Lists

  • Linked list principles
  • Using recursive functions
  • Implementing a circular list
  • Implementing a self-adjusting list

Binary Trees

  • Binary tree principles
  • Using trees for sorted data
  • Insertion
  • Deletion