Học con trỏ (pointer) và bộ nhớ trong C (chuẩn C17) với mô phỏng RAM trực quan: con trỏ với hàm/mảng/chuỗi, cấp phát động (malloc/free), struct & danh sách liên kết, undefined behavior, header & module. Học xong bạn đọc được mã C nhiều module và tự dựng phần mềm terminal có cấu trúc. Cảm hứng từ Modern C.
19 bài ~460 phút Đã xuất bản Cập nhật 11/06/2026
Học xong mèo con làm được gì?
- Hiểu và dùng con trỏ (pointer) trong các tình huống hay gặp: biến, hàm, mảng và chuỗi.
- Biết cấp phát động (malloc/free), nhận diện memory leak, use-after-free và double free.
- Đọc được mã C nhiều module trong các dự án mã nguồn mở ở mức cơ bản.
- Dựng được phần mềm C nhiều module, có tách interface/implementation và có unit test.
Lộ trình học
- 1 Con trỏ & địa chỉ Con trỏ (pointer) trong C: mọi biến có một địa chỉ trong RAM; & lấy địa chỉ, * (dereference) truy cập giá trị - học với mô phỏng RAM trực quan. Nâng cao · 24′
- 2 Con trỏ & hàm Con trỏ và hàm trong C: truyền địa chỉ (pass by pointer) để hàm sửa được biến gốc; viết hàm hoanVi (swap), out-parameter và bẫy dangling pointer. Nâng cao · 22′
- 3 Đọc khai báo C phức tạp Đọc khai báo C phức tạp (C declarations): giải mã int (*f[10])(void) bằng quy tắc phải trước trái sau; *a[10] vs (*p)[10], cmp của qsort, typedef & cdecl. Nâng cao · 22′
- 4 Con trỏ & mảng Con trỏ và mảng trong C (pointer & array): tên mảng là địa chỉ phần tử đầu, số học con trỏ, a[i] = *(a+i) và bẫy mảng suy biến (decay) khi truyền vào hàm. Nâng cao · 24′
- 5 Chuỗi & con trỏ char Chuỗi và con trỏ char trong C (string & char pointer): char arr[] vs char *p, chuỗi hằng chỉ-đọc, duyệt chuỗi bằng con trỏ và tự viết strlen. Nâng cao · 22′
- 6 Bố cục bộ nhớ (Stack/Heap/Data) Bố cục bộ nhớ chương trình C (memory layout): vùng text, data, bss, stack và heap - mô phỏng chạy từng dòng code và xem biến rơi vào vùng nhớ nào. Nâng cao · 24′
- 7 Cấp phát động (malloc/free) Cấp phát bộ nhớ động trong C (dynamic allocation): malloc/calloc/realloc/free, heap vs stack, rò rỉ bộ nhớ (memory leak), use-after-free và double free. Nâng cao · 26′
- 8 Struct & con trỏ struct Struct và con trỏ struct trong C: toán tử ->, malloc một struct trên heap, và danh sách liên kết (linked list) - struct trỏ tới chính kiểu của nó. Nâng cao · 24′
- 9 Union, biểu diễn byte & alignment Union trong C: type punning đọc một vùng nhớ theo nhiều kiểu; biểu diễn byte, alignment & padding trong struct và luật effective type của C17. Nâng cao · 24′
- 10 Bẫy & quản lý bộ nhớ Bẫy con trỏ và quản lý bộ nhớ trong C: void *, const với con trỏ, con trỏ hàm (function pointer) và callback - checklist bẫy cùng kỷ luật sở hữu (ownership). Nâng cao · 24′
- 11 Header & module Header và module trong C: tách interface (.h) khỏi implementation (.c), hàm static, include guard, forward declaration và đặt tên module có tiền tố. Nâng cao · 22′
- 12 Đóng gói & thư viện Đóng gói trong C với opaque type: giấu struct trong .c, thiết kế module tái dùng như thư viện (library), bố cục dự án include/ src/ tests/ để dễ kiểm thử. Nâng cao · 24′
- 13 Tệp & luồng dữ liệu (FILE *) Đọc ghi tệp trong C với FILE *: fopen/fclose, fgets/fprintf, văn bản vs nhị phân (fread/fwrite), buffering và fflush - để dữ liệu sống qua mỗi lần chạy. Nâng cao · 24′
- 14 Xử lý lỗi kiểu C Xử lý lỗi (error handling) trong C: báo lỗi bằng giá trị trả về & errno, hợp đồng hàm enum mã lỗi, dọn tài nguyên với goto cleanup - viết C không nuốt lỗi. Nâng cao · 22′
- 15 Macro hàm, inline & _Generic Macro dạng hàm trong C và cạm bẫy của nó (thiếu ngoặc, lượng giá hai lần), hàm static inline, và _Generic (C11) - đa hình lúc biên dịch của C hiện đại. Nâng cao · 24′
- 16 Bẫy kinh điển & undefined behavior Bẫy kinh điển trong C (C Traps and Pitfalls): = vs ==, số octal, dangling else, ưu tiên toán tử - và undefined behavior (UB) kèm cách bắt bằng sanitizer. Nâng cao · 26′
- 17 Unit test trong C Kiểm một module C cô lập: Arrange · Act · Assert; phủ happy/edge/error; table-driven; framework tí hon → CTest → Unity. Nâng cao · 26′
- 18 Integration test trong C Kiểm các module GHÉP nhau ở chỗ tiếp giáp: round-trip lưu/đọc qua tệp, fixture, end-to-end CLI black-box, tháp kiểm thử. Nâng cao · 26′
- 19 Dự án cuối khoá: 3 app nhiều module Ghép tất cả lại: dựng Todo, Quản lý chi tiêu & Bình chọn - chung kiến trúc 4 lớp (Model · Store · Storage · CLI), tái dùng module & viết nghiệp vụ sạch. Nâng cao · 30′
Sắp bắt tay vào dự án thật?
Tên miền, VPS, hosting để đưa sản phẩm lên mạng - chọn ở trang Ưu đãi. Mua qua link là góp thêm “cá” nuôi Mèo, bạn không tốn thêm.