rety2007 发表于 2023-10-3 19:45:34

25天内能否c语言速成?

25天内能否c语言速成?

weekeight 发表于 2023-10-3 19:46:19

学语言本身,最多一个月就可以。指针与函数指针,学完没理解。花数年时间理解。快点理解,可以看看汇编的寻址部分以及C专家编程指针讨论。这两门知识一定可以帮助彻底理解指针。多长时间能通看个人悟性。
C语言有99与11规范,规范本身就是几百页小册子。直接读未必好理解,不看不行的。我写UNIX环境高级编程,来回磨两遍。搞懂的C99规范,99规范懂11规范就无大问题,加了一些特性。
编译器,这一定需要学,重中之重是编译过程与链接过程。我看C专家编程查阅了很多帖子搞懂的。次重要的就是编译选项,我查资料思考慢慢搞懂编译选项的含义。编译选项也可以看编译器说明文档,得理解硬件知识。
汇编,不是必须的。如果要成为高手,应该要会汇编与机器码,C语言编译过程有一道工序就是翻译成汇编语言。懂汇编语言可以自己改写汇编代码。这步初学或者非超一流高手不要考虑。C专家编程有论述。而且真做到这一步,要完全理解CPU才能写的。
数据结构与算法,C语言编程必须懂。C语言天然缺计算机信息结构的抽象代码,现在可能有人已经写好了,至少得会用。
网络以及其它设备的访问,多线程,进程控制,系统其它API,图形化API,不同种类的系统,有差别。UNIX与LINUX有suse规范与post规范要学,Windows有本核心编程的书要学,Windows规范几乎就在这本书中。Linux实现特定API需要专门学Linux或查手册也可以。poll,Linux上有epoll查手册,手册上有说明。
程序内存模型,Windows与UNIX不太一样,一定要搞很熟悉。看系统编程会教,第一次看不一定能理解,慢慢看。另外就是系统启动过程,也相当重要。这两块我配合网上的资料看。
UNIX推荐学Steven编写三套书,TCP/IP协议详解,UNIX环境高级编程,UNIX网络编程。数据结构与算法,推介看有本C语言描述的算法更好,进阶可以看算法导论,计算机程序设计与艺术。
C++也顺带着学,C++规范自99之后,还有11...以及更多,我接触最新规范是20。
我学的C primary plus,前后两次阅读花掉两个月零两周。STL模板,读过三本不同书,一本是介绍算法的,花掉5个月以上时间。还有C++准标准库boost库,我就大概了解一下,学得不深。
最后一项是make文件制作,这不难,我阅读别人写的资料。读一遍就可以自己写,经常用很快可以熟悉。
以上,我总工花掉5年以上时间,对C以及C++有整体观念。最可惜,我不做C语言编程。会也就一直放着,必要时看看底层代码。也可以更好理解其它编程语言。
算什么水平,我自己也搞不清楚,我自评达到以上程度应该算很熟练。
来源:作者:知乎用户Gisn7h 链接:https://www.zhihu.com/question/427778868/answer/1662665630建议:

想好好学C语言,尽量不要单一的只是看书(尤指谭浩强老师的,这是来自众多社群小伙伴的建议),多动手才是王道。

在学习时,一定要理解的核心是,通过学习C语言来理解编程的思想,一种思路。这些东西不仅仅只是在编程时会用到的。

学习本来就是一个融会贯通的过程。
零基础入门推荐中国大学mooc的翁凯老师(浙江大学)的程序设计与c语言入门,进阶。跟着视频视频写一遍代码,你写三遍。第二天早中晚复习一遍。
程序设计入门——C语言_浙江大学学完之后找相应的习题,比如谭浩强的课后习题,自己做,做不出来找答案。
之后C语言基础差不多了,同样还是浙大的《数据结构》何钦名,陈越老师的,把数据结构的伪代码全部实现一遍。
可以参考《数据结构高分笔记》、以及百度。
学完这两个你就算入门了吧,可以去学其它自己喜欢的,例如JAVA什么的找方向。
上中国大学mooc网站或者下他们的app搜索翁恺,和陈越,当然B站上也有他们的课程。
有一定基础以后,可以看B站魏老师的c语言最佳实践课程,可以对c语言的运用有更多理解,而且魏老师本人有很多开源项目可以参考学习:
【C 语言最佳实践之可读性|视频号<考鼎录>直播回放-哔哩哔哩】 阿里大佬强烈推荐的C语言学习路线最近很多同学问我大厂面试的核心知识点,东哥熬夜整理出来了9大核心知识点,需要的自取:
BAT大佬整理的进大厂必看秘籍!​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247487114&idx=1&sn=3daf22898b8149910b297f48376395a3&chksm=fdb3f054cac47942e2dcd43ba8a33ab414e0dafb2300ac2eebc9fe18af5cd9f4618b3b4f3266#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247487114&idx=1&sn=3daf22898b8149910b297f48376395a3&chksm=fdb3f054cac47942e2dcd43ba8a33ab414e0dafb2300ac2eebc9fe18af5cd9f4618b3b4f3266#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247487114&idx=1&sn=3daf22898b8149910b297f48376395a3&chksm=fdb3f054cac47942e2dcd43ba8a33ab414e0dafb2300ac2eebc9fe18af5cd9f4618b3b4f3266#rd另外,我当初在准备各大公司技术笔试的时候刷了大量的算法题,其中就是参考了一本谷歌大神的LeetCode刷题笔记,帮我整理了解题思路,归纳了出刷题方法,非常不出错,转给需要的同学:
卧槽!字节跳动《算法中文手册》火了,完整版 PDF 开放下载!​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247487117&idx=1&sn=652cf7049054f421f502ee045454cc3b&chksm=fdb3f053cac4794516387eae78395d23879162d9ce15719444c246c86ca0dad021d8c713502c#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247487117&idx=1&sn=652cf7049054f421f502ee045454cc3b&chksm=fdb3f053cac4794516387eae78395d23879162d9ce15719444c246c86ca0dad021d8c713502c#rd​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247487117&idx=1&sn=652cf7049054f421f502ee045454cc3b&chksm=fdb3f053cac4794516387eae78395d23879162d9ce15719444c246c86ca0dad021d8c713502c#rd最后给大家介绍一份计算机经典书籍,送大家一份硬核书籍资源:读大学跟工作期间,我买了很多书,大部分是一些技术书籍,也收集了这些书籍的电子版,都在这里,现在免费share给大家,包括了计算机类常用电子书,包括C,C++,Java,Python,Java,Linux,Go等,希望大家能认真阅读。点击下方链接直达获取:
计算机经典必读书单(含下载方式)​mp.weixin.qq.com/s?__biz=MzU4MjgwNjQ0OQ==&mid=2247487238&idx=1&sn=c63594d794bed494ff91bebd4c8de37c&chksm=fdb3f1d8cac478ce0bb20b69a930567c8790e1c3fe4629aacb805a5c2ac9f39035772855738e#rd码字不易,硬核码字更难,希望大家不要吝啬自己的鼓励,给我 :
@码农出击
一个点赞,鼓励下我!

fkbill 发表于 2023-10-3 19:46:48

找对课程和教材,25天搞定C语言问题不大。
下面来分享一下C语言的学习路径并分享一些适合新手的C语言项目。
零基础的小伙伴可以先从视频课程入手,国内浙大翁凯老师的课,看过的都说好~
浙大C语言-翁凯,分为两门:
C语言程序设计CAP(大学先修课):https://www.icourse163.org/course/ZJU-1001614008
C语言程序设计进阶:https://www.icourse163.org/course/ZJU-200001第一门是面向高考结束想提前自学一点编程和大一新生的,叫大学先修课。
虽然叫先修课,但是覆盖了C语言的主要知识点~
第二门是C语言程序设计进阶,会带你用C语言完成一些有趣的项目,比如一些图形界面小游戏。
先修课学习C语言语法基础,进阶课带你项目实操,搭配使用,你就是同学中的大神!
夏天:计算机必看经典书籍(附pdf下载),请注意查收~关于编辑器/IDE,推荐如下几个适合初学者的:


[*]Visual Studio(Windows平台)。微软出的,有点庞大。
[*]Dev C++。没有VS那么复杂,是一款免费的C/C++ IDE,内嵌GCC编译器,是NOI等比赛的指定工具。
[*]Code::Blocks一款开源、跨平台、免费的 C/C++ IDE,它和 Dev C++ 非常类似,小巧灵活,易于安装和卸载,不过它的界面要比 Dev C++ 复杂一些,不如 Dev C++ 来得清爽。
C语言经典的书籍这里推荐3本:


[*]第一本是《C Primer Plus》,比较适合入门。内容循序渐进,书中的每一个知识点都有很多生动简单的示例,并给出了相应的运行结果。而且每章末设计了大量复习题和编程练习,帮助巩固所学知识和提高实际编程能力。


[*]第二本是《C程序设计语言》,豆瓣评分9.4分,适合有一点基础后再来看。


[*]进阶推荐《C和指针》。全书共18章,覆盖了数据、语句、操作符和表达式、指针、函数、数组、字符串、结构和联合等几乎所有重要的C编程话题。书中给出了很多编程技巧和提示,每章后面有针对性很强的练习。
适合新手练习的C语言项目推荐!

核心的基础知识掌握并会初步运用,其实就可以开始做一些mini的项目了,在实践中学习更有体感,理解更深刻。并不建议大家在理论基础上花太多时间,毕竟计算机是时间性强的学科,必须多动手,多实践。
(1)PTA-<a href="http://www.zhihu.com/search?q=%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A2297523111%7D" class="internal">程序设计实验辅助教学平台

传送带:https://pintia.cn/problem-sets?tab=0
上面有非常多的习题,非常适合练习。
夏天:计算机必看经典书籍(附pdf下载),请注意查收~(2)webbench-网站压测工具

一款知名的linux下的网站性能压测工具,由Lionbridge公司开发,代码不多,不到1000行。
它使用fork()模拟多个客户端同时访问我们设定的url,测试网站在压力下的性能,可以同时模拟3W个并发连接去测试网站的负载能力。
webBech的标准测试可以向我们展示服务器的两项内容:每秒钟相应请求数和每秒钟传输数据量。
webbench不但能具有便准静态页面的测试能力,还能对动态页面(ASP,PHP,JAVA,CGI)进行测试的能力。还有就是他支持对含有SSL的安全网站例如电子商务网站进行静态或动态的性能测试,
下载地址:
http://home.tiscali.cz/~cz210552/webbench.html
使用起来非常简单:
wget https://www.ha97.com/code/webbench-1.5.tar.gz
tar zxvf webbench-1.5.tar.gz
cd webbench-1.5
make
make install命令行选项

http://picx.zhimg.com/v2-87a91855dd7d98526b6a2f54bef9fcf1_r.jpg?source=1940ef5c
其核心原理:

[*]父进程fork多个子进程,每个子进程在用户要求时间或默认时间对目标网站发起访问请求,父子进程通过管道进行通信。子进程通过管道写记录到的信息,父进程通过管道读子进程的信息,子进程在时间到后结束。父进程在子进程退出后统计并展示信息。
(3)CJson-JSON解码器

CJson是一款JSON解码器,代码不到1000行。github star 6.7K。
github:https://github.com/DaveGamble/cJSON
其核心数据结构:
/* The cJSON structure: */
typedef struct cJSON
{
    struct cJSON *next;
    struct cJSON *prev;
    struct cJSON *child;
    int type;
    char *valuestring;
    /* writing to valueint is DEPRECATED, use cJSON_SetNumberValue instead */
    int valueint;
    double valuedouble;
    char *string;
} cJSON;支持的类型:
/* cJSON Types: */
#define cJSON_False 0
#define cJSON_True 1
#define cJSON_NULL 2
#define cJSON_Number 3
#define cJSON_String 4
#define cJSON_Array 5
#define cJSON_Object 6其API用起来也非常简单:
char *out;cJSON *json;
   
json=cJSON_Parse(text);
if (!json) {
    printf("Error before: [%s]\n",cJSON_GetErrorPtr());
} else {
    out=cJSON_Print(json);
    cJSON_Delete(json);
    printf("%s\n",out);
    free(out);
}(4)EasyLogger-高性能、轻量级C/C++日志库

是一款超轻量级、高性能的C/C++日志库,非常适合资源敏感的场景。
其功能简单,上手迅速,以插件形式动态扩展支持更多实用功能。
代码下载链接:
https://gitee.com/Armink/EasyLogger
主要特性:
支持用户自定义输出方式(例如:终端、文件、数据库、串口、485、Flash...);
日志内容可包含级别、时间戳、线程信息、进程信息等;
日志输出被设计为线程安全的方式,并支持 异步输出 及 缓冲输出 模式;
支持多种操作系统(RT-Thread、UCOS、Linux、Windows...),也支持裸机平台;
日志支持 RAW格式 ,支持 hexdump ;
支持按 标签 、 级别 、 关键词 进行动态过滤;
各级别日志支持不同颜色显示;
扩展性强,支持以插件形式扩展新功能。(5)cWebsocket-轻量级websocket服务库

传送带:https://github.com/m8rge/cwebsocket
特点:跨平台、轻量级。
(6)cmockery-轻量级单元测试框架

一款轻量级C语言单测框架,google发布的,非常小巧和轻量级,代码不到3K行。对其他开源包没有依赖,对被测试代码侵入性非常小。
是由google在2008年发布的,这是google open source blog上的博文:
https://opensource.googleblog.com/2008/09/cmockery-easier-unit-tests-for-c.html
github链接:
https://github.com/google/cmockery
(7)C语言实现数独

youtube上有完整的详细的系列教学视频,强烈推荐:
https://www.youtube.com/playlist?list=PLkTXsX7igf8edTYU92nU-f5Ntzuf-RKvW
不过视频是英文的,需要一定的英文听力能力。

http://picx.zhimg.com/v2-18604dcf2267441a70556d85b6d8edc8_r.jpg?source=1940ef5c
(8)Tinyhttpd-轻量级http server

一款超轻量级http server,使用C语言开发,代码总共才500行左右。通过这个小工程可以理解一个httpserver的本质。
github star 7.8K:https://github.com/EZLippi/Tinyhttpd
基础工作原理:

http://picx.zhimg.com/v2-e6b2851046fc88749bcde88de2c91e4f_r.jpg?source=1940ef5c
(9)libev-开源事件驱动框架

难度指数:中。一款C语言编写的高性能事件驱动框架,基于reactor模式实现。
官网:http://software.schmorp.de/pkg/libev.html
github(star 1.2K):https://github.com/enki/libev
文档介绍:https://metacpan.org/dist/EV/view/libev/ev.pod
注意:学习此框架需要了解Linux操作系统部分基础知识。IO多路复用技术:

http://picx.zhimg.com/v2-dc211e9207787146bfe92788e4a9bf27_r.jpg?source=1940ef5c
reactor模式:

http://pic1.zhimg.com/v2-b7bbd589f830050f6b59f668e830dd0d_r.jpg?source=1940ef5c
模块间的交互:

http://pic1.zhimg.com/v2-be7fe7bd675892e0d3437a23cfdb8801_r.jpg?source=1940ef5c
(10)buildyourownlisp-小型Lisp解释器

难度指数:高。一本开源书籍,教你用C语言实现自己的lisp语言:一个1000行左右的简单lisp。
链接:https://www.buildyourownlisp.com/
网上有2个中文翻译版:
(1)https://www.abnerchou.me/BuildYourOwnLispCn/
(2)并未翻译完成:https://ksco.gitbooks.io/build-your-own-lisp/content/

http://picx.zhimg.com/v2-76bb1d59391ad8e458aac924e6e53063_r.jpg?source=1940ef5c
网友的实现:https://github.com/NessOffice/Lisp_on_C
(11)kilo-文件编辑器

用不足1000行代码实现一个文件编辑器,酷不酷?
github star已有5.3K:https://github.com/antirez/kilo
博客介绍:http://antirez.com/news/108
官网:https://viewsourcecode.org/snaptoken/kilo/

http://picx.zhimg.com/v2-0a674302202bad13663b9438de62fc0c_r.jpg?source=1940ef5c
(12)ffmpeg-视频播放

不足1000行代码实现视频处理功能:
http://dranger.com/ffmpeg/ffmpeg.html
在做项目的过程中,大家还要掌握良好的编码习惯,这里挑选了业内毕竟推崇的2个编码规范:
①华为C语言编码规范:https://www.dongeasy.com/wp-content/uploads/2018/03/%E5%8D%8E%E4%B8%BA%E6%8A%80%E6%9C%AF%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8c%E8%AF%AD%E8%A8%80%E7%BC%96%E7%A8%8B%E8%A7%84%E8%8C%83.pdf
②Google C++ Stype:https://google.github.io/styleguide/cppguide.html
学习计算机一定不要想着速成,没有什么捷径和超能力。要下苦功夫去啃那些经典书和源码,然后自己动手写,所有技术大佬都是一行行代码敲,一本本书啃出来的。

http://picx.zhimg.com/v2-8135608f595038824c82fe2267303a3d_r.jpg?source=1940ef5c

我看过的书籍里的一部分

我在大学期间,为了把专业学好,看了大量经典的专业书籍,整理了这份计算机必读的高分经典书籍:

http://picx.zhimg.com/v2-94952ac3d3918060d6edb85dadbdce90_r.jpg?source=1940ef5c

需要的戳下面链接下载

这份书单对于CS学习的同学帮助非常大且十分系统,这些书籍的电子版已经整理好了。
需要的直接戳这里领:计算机必看经典书籍(附pdf下载),请注意查收~
希望本回答能对你有所帮助~

yaner 发表于 2023-10-3 19:47:17

1、这个得分人,有顶级教授(密码学专家)2小时就学会了。
   也有人学很久,不得其法。
2、你能保证有连续25天空闲时间?
3、欲速则不达,踏踏实实的找本书,认真看书,做题吧。

《C语言程序设计 现代方法 第2版·修订版》
【作者简介】
K. N. 金(K. N. King)
世界知名的计算机程序设计教育家。他拥有耶鲁大学计算机科学硕士学位,加州大学伯克利分校计算机科学博士学位,曾任教于佐治亚理工学院和佐治亚州立大学。除本书外,他还撰写了广受欢迎的著作Modula-2: A Complete Guide和Java Programming: From the Beginning。

xiaojin 发表于 2023-10-3 19:47:29

不用25天,每天2小时,16天就行了。C语言也就32个学时。
16天以后可以去拼题A的教育超市试试基础级卷子,看看自己是什么段位:
PTA | 程序设计类实验辅助教学平台然后你就懂了。

猫猫去偷欢 发表于 2023-10-3 19:47:53

如果你有其他类C语言做基础,25天你套用其他语言的经验,用C写点东西还是能做到的。但C有很多坑25天是无法做整体的了解,所以写出来的代码算是玩具吧。没什么价值
结论不行
页: [1]
查看完整版本: 25天内能否c语言速成?