C CLP study guide
C CLP · Work through your exam, one topic at a time.
The C Certified Professional Programmer (CLP) is a vendor-style credential that tests whether you can read, reason about, and write C at a professional level rather than merely recall syntax. It suits working developers who already write C in embedded, systems, networking, or tooling contexts, and students who want an externally recognized signal of C competence. The C CLP study guide has 10 sections and about 4,665 words.
01Program Structure, Compilation, and Preprocessing
The exam uses this domain to check that you can follow a C source file through preprocessing, compilation, and linking, and predict exactly what the preprocessor substitutes before the compiler parses anything. Line splicing (a backslash at the end of a line) happens first, then comments become a single space, then the text is split into preprocessing tokens.
478 words, about 2 min02Data Types, Declarations, and Type Conversions
This domain tests whether you can name the type and value of an expression after C's implicit conversions, and whether you know which conversions are undefined rather than merely surprising. Integer types: char , short , int , long , long long , each signed or unsigned; Bool (include <stdbool.h for bool , true , false ).
474 words, about 2 min03Operators, Expressions, and Evaluation Order
This domain asks you to parse an expression the way the compiler does - precedence, associativity, operand grouping - and then decide whether the result is well-defined, unspecified, or undefined. Tightest: postfix () [] .
484 words, about 2 min04Control Flow and Statements
This domain checks that you can trace control flow through if , switch , and the three loop forms, including fallthrough, the dangling else , and where break and continue actually transfer control. An else binds to the nearest unmatched if ; braces make the intent explicit.
444 words, about 2 min05Functions, Scope, Storage Duration, and Linkage
This domain probes three separate questions the exam likes to mix: where a name is visible (scope), how long its object lives (storage duration), and whether other translation units can see it (linkage). A prototype such as int f(int, char ); gives the compiler parameter types and enables argument conversion.
464 words, about 2 min06Pointers and Arrays
This domain tests the array–pointer relationship precisely: when an array name decays, which pointer arithmetic is defined, and how multidimensional arrays and parameters change type. In most expressions an array converts to a pointer to its first element.
468 words, about 2 min07Strings and Character Handling
This domain measures how well you handle NUL-terminated byte strings: the difference between array size and string length, which library functions guarantee termination, and the pitfalls of the character-classification functions. A string is a char array ending with a NUL character.
455 words, about 2 min08Dynamic Memory Management
This domain focuses on the contract of each allocation function, the four ways heap code goes wrong (leak, double free, use-after-free, out-of-bounds access), and how to handle allocation failure correctly. void malloc(size t n) returns uninitialized memory, suitably aligned for any type, or NULL .
454 words, about 2 min09Structures, Unions, Enumerations, and Bit-fields
This domain asks you to predict object layout - padding, alignment, union overlap, bit-field packing - and to know which operations on aggregates are legal in C. Members appear in declaration order with padding inserted to satisfy each member's alignment, so sizeof may exceed the sum of the member sizes.
482 words, about 2 min10Standard Library Usage and File I/O
This domain tests practical use of <stdio.h plus the conversion and utility functions in <stdlib.h : correct mode strings, correct return-value checking, and the distinction between EOF , a read error, and a valid byte. FILE fopen(const char path, const char mode) returns NULL on failure - always check.
462 words, about 2 min