← Tất cả khoá học

Lập trình C nâng cao

Con trỏ, bộ nhớ & cơ chế bên dưới

Biên soạn bởi Nguyễn Anh Tuấn

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. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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ó.
  9. 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.
  10. 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).
  11. 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ố.
  12. 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ử.
  13. 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.
  14. 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.
  15. 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.
  16. 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.
  17. 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.
  18. 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ử.
  19. 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.

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.

Ưu đãi & công cụ →