进阶阶段复习 (Advance Review)
开篇语
恭喜你读完了进阶篇!下面是 15 道综合题目,检验你是否真正掌握了 C 语言的高阶技巧。
Q1 🟡 — 错误处理
errno 在什么情况下会被设置?如何正确检查?
查看答案
当系统调用或库函数失败时设置。正确做法:先清零 `errno = 0;`,调用函数,然后检查 `if (errno != 0)`Q2 🟡 — 原子类型
atomic_int 与 volatile int 的区别是什么?
查看答案
`atomic_int` 保证原子性和内存序(线程安全)。`volatile` 仅禁止编译器优化,不提供原子性。Q3 🔴 — 透明指针
什么是"Opaque Pointer"模式?
查看答案
头文件中声明结构体但不定义(`typedef struct MyObj MyObj;`),源文件中定义。用户只能通过 API 操作,无法访问内部数据。Q4 🔴 — 线程同步
pthread 中 mutex 和条件变量的区别?
查看答案
mutex 保护共享数据(互斥)。条件变量用于线程等待某个条件成立(信号机制)。Q5 🔴 — 数据结构
双向链表 vs 单向链表的优缺点?
查看答案
双向:可反向遍历、删除 O(1),但多一个指针开销。单向:省内存,但只能前进、删除需遍历。小结
答对 10+ 题说明你已经掌握进阶 C 编程!继续挑战高级项目吧。