
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Learn the C programming language through variables, structures, unions, functions, and pointers, and build a book library project to practice adding and removing books.
Install visual studio code and the mingyu c compiler on windows, set the system path for mingyu, and verify the compiler is recognized in the command prompt.
Create a simple hello world program in C by writing main.c, including stdio.h, and printing hello world with printf. Compile with gcc to produce an executable named main on Windows.
Learn all about variables and how to use them
Explore defining and calling functions in C with void and integer return types, passing arguments, returning results, and using prototypes, main, and printf to manage output and code organization.
Learn about primitive types in C, including integer, char, short, long, float, and double, with unsigned and signed variants, sizes, and examples like ASCII characters and currency.
Learn how arrays store multiple values of the same type under one name, using char name[20], zero-based indexes, and safe access to avoid buffer overflow on the stack.
Learn how multi-dimensional arrays form a 20 by 20 map to store bytes, access coordinates like map[0][0], and represent x and y coordinates using ascii values.
Learn to read a name and age from the keyboard on Windows via scanf, pass addresses with ampersands, differentiate arrays from variables, and guard memory with basic input safety.
Every C object has a memory address; use ampersand and dereferencing to access and modify values, including arrays and pointers to pointers, while respecting stack scope safety.
Explore function pointers by creating pointers to functions, pointing to void and int return functions, and calling them through the pointer using the address of the function.
Define structures in C with the struct keyword to group related data. Access members via dot or via pointers, and pass structures by address to functions to share data.
Explore the C preprocessor, a compile-time language built into C, showing how #ifdef and #define control compilation through macro replacements and kernel-version compile-time checks.
Explain header files and object files, exporting prototypes and structures to share functionality, use include guards to prevent multiple definitions, and illustrate compiling and linking to resolve functions across files.
Explore if statements in C, using == for comparisons, else if and else branches, and the distinction between expressions and statements, including nonzero truth and the not operator.
Learn to use C operators, including comparison operators (>, <, >=, <=, ==, !=) and arithmetic operators (+, -, *, /, %). Combine conditions with logical operators like &&.
Explore loops in C, including for, while, and do while, and learn how initialization, condition, and increment control iterations; see break and continue in action and understand loop scope.
Explore legacy C practices, including top-of-scope variable declarations, how new scopes affect for loops and if statements, and use of C11 to access modern features.
Explore nesting statements in C programming on Windows, including nested if statements and loops, and learn to validate data with early returns to keep code clean.
Explore global variables declared outside a scope and accessed across functions, how local variables and scopes shadow outer variables with same name, and why leaving a scope yields undefined behavior.
Learn how external variables work by declaring a global variable as external, producing an undefined reference until you define it in another file's object file. Link to resolve the symbol.
Learn how c strings automatically include a null terminator (decimal zero) and how the ascii table maps decimals like 65 to 'A' and 48 to '0' for printing.
Compare character pointers and character arrays, showing how pointers reference compile-time addresses in the data section while arrays reside on the stack, and why ABC2 can’t be assigned to ABC.
This lecture explains typedef in C, creating alias names for primitive types and structs, and typedefing function pointers to improve readability, with compile-time resolution.
Learn how to use booleans in C on Windows by including a header, access true and false, and understand that false equals zero and true equals one, enabling conditional checks.
Discover how unions in C on Windows let multiple variables share the same memory region. See how writing to one member overwrites others, with hex demonstrations.
Learn how hexadecimal, binary, and decimal representations relate in C, using 0x and 0b prefixes, and print values in both formats with printf.
Discover how to use single-line and multi-line comments in C to annotate code. See how a documentation generator can build a website from your function descriptions.
Learn how makefiles automate building a multi-file c project by defining rules, compiling object files, and linking them with make, including clean targets.
Explore casting in C on Windows, converting floats to ints, casting between primitives, casting pointers and structures, and understanding endianness and network byte order.
Explain what a library is and how dynamic link libraries share code across projects by creating a my_sum library, compiling it into a dynamic library, and linking main to run.
Explore the goto keyword and its ability to jump to labels, noting the risk of abuse in C and its role in memory cleanup by jumping to an out label.
Explore how stack memory is fast but limited, and how to allocate on the heap with malloc, use a void pointer cast to char, and free memory to prevent leaks.
Explore memory functions in C by initializing and safely handling buffers with memset, using memcpy to copy strings, and employing strlen and memcmp to compare memory, avoiding buffer overflows.
Learn to read and write files in c on Windows with fopen and modes r, w, and a, plus fread behavior and append versus overwrite, including r+, w+, and a+.
Explain the const qualifier in C programming on Windows for beginners: const makes variables read-only at compile time; memory can still change at runtime, and pointers to const prevent assignment.
Explore how static functions restrict a function to its source file. Demonstrate with a test file and a my_sum function, showing a static symbol causing an undefined reference during linking.
Master bitwise operators in C, including and, or, xor, and not, and learn bit shifting with practical examples using unsigned char and flag bits.
Explore how a C program receives command-line arguments through argc and argv. See how argc counts arguments, argv holds them, with argv[0] as the program name and quotes grouping arguments.
Learn how to seek in files using fseek and ftell in C on Windows, repositioning the read/write pointer, and reading from a specific offset.
Master switches in C by comparing a value against constant cases, using break to prevent continuing to the next case, utilizing default for unmatched cases, and creating scopes with braces.
This lecture discusses enumerations in the C programming language
Learn to create a binary book program in C on Windows that can add and read books, using Hex Editor Neo to inspect the binary file.
List and read books from a file, seeking end and back to start as needed. Allocate heap memory for books, index them for viewing, and validate user input.
Show bit masking with a typedef unsigned char book flag and bitwise or to mark a sold book. Explain memory management via malloc/free and file handling to prevent memory leak.
Explore bonus lectures on assembly, kernel development, building a C compiler, creating a chip-8 emulator, arduino firmware, and an intro to C++, all with discounts.
It's time to finally master the C programming language. Dan, your tutor, has been developing in the C programming language for over ten years and has a lot of experience to give. In this course you will learn C programming on Windows. What makes this course different from the others is that you will actually use the compiler. An IDE will just not do it for us. We will be using the compiler ourselves this will give you the experience you need to manually use the GCC compiler. Be A Pro.
This course will teach you everything about the C programming language, you will be taken through the basics all the way to more complicated concepts such as functions, pointers and library development. Best of all this course is made to be beginner friendly.
We end this course by creating a book program that allows a user to create books, save them to disk and then read them again.
Once you have finished this course you will be experienced in the C programming language and will have no trouble moving forward with your own personal projects. This course is great for students who need that extra push
This course is beginner friendly regardless of your current skill level
Introduction Video Music by Ben Sound