c语言学习网站
打开LeetCode的语言学C语言题库,第一道题是习网“两数之和”。你盯着函数签名int* twoSum(int* nums,语言学 int numsSize, int target, int* returnSize),指针的习网指针、数组长度、语言学返回大小——四个参数里三个都带星号。习网这跟你在教材上学的语言学那种int main()完全不是一回事。很多人就是习网在这个瞬间决定去找个网站系统补课的。
菜鸟教程(runoob.com)大概是语言学中文互联网上被搜到最多的C语言入门站。它的习网好处是快:变量、循环、语言学函数、习网数组,语言学每个知识点一页,习网代码块可以直接在线运行。语言学你不需要装gcc,不需要配环境变量,打开浏览器就能敲printf("hello")。但它的C语言部分深度有限,指针讲得浅,内存管理基本一笔带过。适合花两天过一遍语法,然后就得换地方。
真正让我意外的是cppreference.com。名字带cpp,但C语言的标准库文档一样全。它的排版不友好,密密麻麻的表格和灰色链接,第一次打开会懵。可一旦你习惯了它的组织方式——按头文件分,每个函数列出签名、参数、返回值、C标准版本——查东西极快。比如你不确定memcpy在重叠内存下的行为,翻到那一页,标准原文写得清清楚楚:重叠时行为未定义,该用memmove。这种精确性是国内很多教程缺的。
想动手写点真东西,Coding Game和HackerRank的C语言赛道值得试。Coding Game把题目包装成小游戏,比如让你写个循环帮飞船躲陨石,底层其实在练数组遍历和条件判断。HackerRank的C语言部分更正经,从“打印hello world”到“用指针实现链表反转”都有,每道题有测试用例,提交后立刻知道过没过。我见过一个自学的朋友,在HackerRank上刷了四十多道C题,然后去写了一个简易的HTTP服务器,虽然只支持GET请求,但socket、字符串解析、内存分配全自己手写了一遍。
视频方面,B站有个叫“鱼C工作室”的UP主,小甲鱼的C语言教程播放量很高。他的风格是边讲边敲,出错就当场调,比如讲scanf时故意输入带空格的字符串,让你看缓冲区里剩了什么。这种“翻车现场”比完美演示更有用。不过视频的缺点是节奏固定,你没法像看文档那样跳着查。适合当背景音过一遍,真要查细节还是得回到文本。
Stack Overflow的C标签下面,每天都有新手问“为什么我的scanf("%d", &n)后面跟gets会跳过”。答案永远是缓冲区里的换行符没清。这个问题被问了十几年,答案的票数高得离谱。你搜任何C语言的报错信息,前面加个“c”再丢进搜索引擎,大概率第一条就是Stack Overflow的链接。它不是教程,但比很多教程更管用——因为每个回答都对应一个具体的人踩过的具体坑。
我的建议是别只盯一个站。菜鸟教程过语法,cppreference查标准,HackerRank练手,Stack Overflow救急。四个网站轮着用,比死磕任何一个都有效。C语言这东西,光看不会,光写不查也容易钻牛角尖。网站只是工具,关键还是你得把代码敲进编辑器,然后按下编译键。