← Quay lại Blog
C Programming

Tự học lập trình C từ số 0: Lộ trình chi tiết 12 phần

25 tháng 6, 2026 · Lộ trình 12 bài học

Ngôn ngữ C là nền móng vững chắc của lập trình hệ thống, hệ điều hành và khoa học máy tính. Học C giúp bạn rèn luyện tư duy tối ưu hóa tài nguyên phần cứng, hiểu sâu sắc cơ chế hoạt động của bộ nhớ RAM và thiết lập một nền tảng lập trình cực kỳ vững vàng trước khi bước sang các ngôn ngữ khác.

Chuỗi bài viết này được thiết kế theo lộ trình khoa học từ cơ bản đến nâng cao, đi kèm các khung giả lập IDE trực quan và công cụ tương tác ngay trên trình duyệt để việc học lập trình không còn khô khan.

Lộ trình bài học chi tiết:

Trước khi bắt đầu

Cần biết trước. Không cần biết lập trình trước. Series bắt đầu từ việc cài compiler và chạy dòng lệnh đầu tiên. Điều thật sự cần là chấp nhận rằng C sẽ bắt bạn tự quản lý những thứ mà ngôn ngữ khác làm hộ.

Series này không dạy. Không dạy C++ (có series riêng), không dạy lập trình nhúng hay kernel. Cũng không dùng thư viện ngoài — chỉ thư viện chuẩn, để mọi thứ bạn thấy đều là thứ bạn tự viết.

Học xong bạn làm được gì. Đọc được mã nguồn C của người khác, kể cả phần con trỏ dày đặc; biết vì sao một chương trình chạy đúng trên máy bạn lại lỗi ở nơi khác; dùng được valgrind/GDB để truy một lỗi rò bộ nhớ thay vì rải printf; và tự cài đặt danh sách liên kết, ngăn xếp, cây nhị phân từ con số 0 bằng cấp phát động.

Vì sao thứ tự này. Con trỏ đặt ở bài 8 chứ không phải bài 3 là có chủ ý: bạn cần đã quen mảng và chuỗi (bài 6) rồi mới thấy con trỏ giải quyết vấn đề gì, thay vì học nó như một cú pháp lạ. Cấp phát động (bài 9) đi ngay sau, và cấu trúc dữ liệu (bài 10) đứng cuối vì nó là chỗ hai thứ đó gặp nhau — kèm phân tích Big O và ảnh hưởng của cache CPU.

12 bài · 12 câu trắc nghiệm · 12 file mã nguồn C tải về biên dịch được ngay · trình trực quan hoá cấu trúc dữ liệu

01

Bài 1: Cài đặt môi trường, Compiler Flags, Makefile & GDB

Cài đặt GCC/Clang, VS Code, cờ biên dịch chuyên nghiệp (-Wall, -Wextra, -g), tự động hóa build với Makefile và gỡ lỗi cơ bản bằng GDB.

02

Bài 2: Cú pháp cơ bản, Biến, Kiểu dữ liệu & Nhập xuất

Cấu trúc chương trình C, biến, scanf/printf, format specifiers, type modifiers, sizeof, enum, hằng số và ép kiểu dữ liệu.

03

Bài 3: Toán tử, Thứ tự ưu tiên & Phép toán Bitwise

Toán tử số học, so sánh, logic. Bảng thứ tự ưu tiên 15 cấp. Bitwise AND/OR/XOR/NOT/Shift, Endianness và ứng dụng thực tế (RGB packing, IP, flags).

04

Bài 4: Cấu trúc rẽ nhánh & Vòng lặp: Nền tảng thuật toán

Câu lệnh điều kiện (if-else, switch), vòng lặp (for, while, do-while), short-circuit evaluation, jump tables và goto cleanup pattern.

05

Bài 5: Hàm, Đệ quy & Phạm vi biến

Khai báo hàm, prototype, truyền tham trị, biến cục bộ/toàn cục/static, đệ quy (factorial, fibonacci), variadic functions và con trỏ hàm callback.

06

Bài 6: Mảng, Chuỗi ký tự & Xử lý văn bản

Mảng 1D/2D, row-major layout, C strings, string.h (strlen, strcpy, strtok...), nhập chuỗi an toàn với fgets, kỹ thuật xử lý chuỗi nâng cao.

07

Bài 7: Cấu trúc Struct, Union, Typedef & Bit-fields

Kiểu dữ liệu phức hợp struct, padding/alignment, pragma pack, bit-fields, typedef, union và so sánh bản chất lưu trữ RAM.

08

Bài 8: Làm chủ Con Trỏ (Pointers) từ cơ bản đến nâng cao

Địa chỉ bộ nhớ, con trỏ cấp 1/2, pointer arithmetic, const/restrict, con trỏ hàm, giả lập Vtable OOP và các lỗi con trỏ nguy hiểm.

09

Bài 9: Cấp phát bộ nhớ động, Quản lý bộ nhớ & Debug Tools

Process memory layout, Stack vs Heap, malloc/calloc/realloc/free, Valgrind, AddressSanitizer và quy trình kiểm tra bộ nhớ chuyên nghiệp.

10

Bài 10: Cấu trúc dữ liệu, Big O & CPU Cache Locality

Linked List, Stack, Queue từ scratch. Phân tích Big O ($O(1)$ đến $O(N!)$), CPU cache locality, space-time trade-off.

11

Bài 11: Lập trình đa tệp, Preprocessor & Công cụ Build

Header/source files, header guards, extern/static linkage, C preprocessor (#define, #ifdef, stringification), conditional compilation và Makefile nâng cao.

12

Bài 12: Trực quan hoá Cấu trúc dữ liệu tương tác trong trình duyệt

Bài học tổng kết. Mô phỏng hoạt ảnh con trỏ liên kết chạy trực tiếp trên web để trực quan hóa cách node hoạt động.