C语言定时器编程完全指南
timer_create、timer_settime、信号驱动定时器与精度控制,助你掌握定时器编程的核心技能。
阅读全文 →围绕 C 语言核心知识,覆盖从入门到工程实战
变量、运算符、控制结构、函数、作用域、存储类别等核心语法点。
指针运算、数组与指针、动态分配、内存泄漏排查与常见陷阱。
链表、栈、队列、二叉树、哈希表的 C 实现与典型应用。
排序、查找、递归、动态规划、图论的 C 代码模板与解析。
文件 I/O、进程、线程、信号、Socket 网络编程入门。
Makefile、GDB 调试、Valgrind 内存检测、单元测试与代码规范。
每周更新 C 语言干货,从语法细节到工程实践
timer_create、timer_settime、信号驱动定时器与精度控制,助你掌握定时器编程的核心技能。
阅读全文 →epoll_create、epoll_ctl、epoll_wait、LT与ET模式,助你掌握高性能I/O多路复用的核心技能。
阅读全文 →mmap、munmap、msync、匿名映射与共享内存,助你掌握内存映射的核心技能。
阅读全文 →dlopen、dlsym、动态加载、插件架构与符号解析,助你掌握动态库加载的核心技能。
阅读全文 →setlocale、宽字符、Unicode转换与多语言支持,助你掌握C语言本地化编程的核心技能。
阅读全文 →daemon函数、会话脱离、PID文件与日志重定向,助你掌握守护进程编程的核心技能。
阅读全文 →文件锁、记录锁、flock与fcntl,助你掌握文件级并发控制的核心技能。
阅读全文 →管道、消息队列、共享内存、信号量与Socket,助你掌握进程间通信的核心技能。
阅读全文 →signal函数、sigaction、信号集、实时信号与安全函数,助你掌握信号处理的核心技能。
阅读全文 →errno机制、错误传播、资源清理与防御性编程,助你构建健壮的错误处理体系。
阅读全文 →分阶段循序渐进,每个阶段都有明确目标
变量类型、流程控制、函数与数组,写出 100 行可运行的小程序。
吃透指针、数组、字符串与多级指针,能独立完成动态数据结构。
用 C 手写链表、栈、队列、二叉树并配合 LeetCode 练习。
Linux 下学习文件、进程、线程、Socket,编写 mini-Shell、HTTP 服务。
实现内存池、命令行工具、JSON 解析器或简易数据库。
掌握 GDB、Valgrind、性能分析与工业级编码规范。
经典「Hello World」与单链表节点定义
/* 经典入门 + 单链表节点 */ #include <stdio.h> #include <stdlib.h> typedef struct Node { int val; struct Node *next; } Node; int main(void) { Node *head = malloc(sizeof(Node)); head->val = 42; head->next = NULL; printf("Hello, ohc.cc! value=%d\n", head->val); free(head); return 0; }
对比 3 组典型代码,避开 C 语言常见陷阱
int *get_val(void) { int x = 10; return &x; /* x 在栈上,返回后失效 */ }
int *get_val(void) { int *p = malloc(sizeof(int)); *p = 10; return p; /* 调用方负责 free */ }
char *s = malloc(256); strcpy(s, "hello"); /* s 可能为 NULL */
char *s = malloc(256); if (!s) return NULL; strcpy(s, "hello");
int *arr = malloc(10 * sizeof(arr)); /* sizeof(arr) = sizeof(int*) */
int *arr = malloc(10 * sizeof(*arr)); /* 或 sizeof(int),与类型解耦 */
经典书籍与在线练习
Brian Kernighan & Dennis Ritchie 经典之作,简称 K&R,必读。
Kenneth Reek 著,系统讲解指针与内存模型,进阶首选。
Peter van der Linden 著,揭示 C 语言中的陷阱与高级技巧。
使用 C 完成算法练习,巩固指针与数据结构应用。
游双著,系统讲解 Linux 网络编程与服务器开发。
C / C++ 标准库官方权威文档,遇到 API 不清楚先查这里。