如何c语言从入门到精通c语言

怎样才叫 “精通” C语言?
按投票排序
精通下棋的规则跟精通下棋是两码事,将前者缩写为后者一般会引起歧义。
从高一时开始学习C,到现在已经十多年了,依然觉得自己还称不上“精通”二字。事实上,在不同的阶段,对“精通”总会有新的定义。很多时候,当你做了不同的项目、看了某篇博客、深入了解了某个开源项目的架构,或是看了Stackoverflow上的一篇回答,你都会觉得离“精通”又近了一步,但又觉得遥不可及。我目前对“精通C语言”的定义可以简单表达为:能够正确的在项目中运用这门语言高效的完成所需的任务;使用这门语言时表达清晰、无歧义、易懂,不易出错;了解这门语言的缺点和常见的陷阱,能够及时发现也要能避免;能够快速的了解和掌握其他项目的结构、风格、设计模式等,并且有能力修复、延续和扩充该项目;在需要的时候,能正确的处理C和汇编、编译器、平台或是其他语言等之间的问题。展开来讲:能够正确的在项目中运用这门语言高效的完成所需的任务“正确的”这几个字我认为很重要,要根据你的实际情况来做判断,临时性的问题可能用脚本就能解决,或者用像Python等语言就可以分分钟解决的,有时就没必要把C搬出来。如果仅仅是把C用来解决临时性的问题的话,那么一定是满足了C的特点,比如追求性能,要处理的数据非常庞大,或者是资源有限等等。C是一门成熟高效的语言,要恰当的使用它才能事半功倍。“高效的”:很多C语言的小项目(1k-2k左右),从项目构思、需求分析、到画出框图、接口描述,然后从最简单的main{return 0;}写起一步步边写边测,并且一直能够保持-Wall=0的状态,用最短的时间高质量的完成任务并交付,最终代码有适当注释,可读性好。能连续敲打数百行代码,且编译后只有少量问题并且编译修改几次后,能很快达到零Warning状态。(仅此一项技能,同一件事:有些人一个小时就能搞定,而且质量很高;有些人得花一个星期,而且代码还各种问题。效率之差距可达数十倍之多)。“运用”:最好的诗人和作家都不一定能把新华字典辞海辞源背下来,他们只要能够在需要的时候准确快速的找到他们要的典故、用法即可。C标准当然要熟,但除了常见的用法要了熟于心外,很多偏僻的用法只要做到知道有这回事,知道怎么找即可。使用这门语言时表达清晰、无歧义、易懂,不易出错;说白了就是写代码的时候就要设身处地的为将来看代码的人着想。表达清晰:变量名称规范,有意义,长度合适。函数内部结构、流程要清晰。文件内部,介绍、includes、声明、实现要清晰,内部函数和接口函数表达清晰项目内部,模块划分清晰,做到低耦合、高内聚。无歧义:变量名,函数名等英文单词的缩写不能有歧义易懂:不炫技,不“zuo”,没有奇怪和偏门的用法,充分利用缩进,空格等方式使得复杂的句子别人一看就懂。难懂的地方,注释要充分,不要吝啬笔墨。不易出错:复杂的逻辑表达式和接口调用要利用缩进、回车等充分展开,避免调用顺序错误导致BUG隐藏。以及所有类似的问题。了解这门语言的缺点和常见的陷阱,能够及时发现也要能避免;这就要靠积累了,指针是C的宝也是最大的坑,是最容易出BUG的地方。一方面要能熟练掌握,另一方面也要思路清晰,尽早发现问题。很多时候充分利用一些静态和动态分析工具,也能尽早的发现大部分问题(如valgrind等)。BUG埋的越深越久,查找的难度是指数级的增加的。能够快速的了解和掌握其他项目的结构、风格、设计模式等,并且有能力修复、延续和扩充该项目;上面讲如何写代码让别人看的懂,这里就要做到有效率的看懂别人的代码并为己用。这是很现实的问题,不论是公司的历史遗留项目,还是发现了一款能够满足自己项目需求的开源组件或是库,你都要能读懂别人的代码。很多时候,你还要沿着原作者的思路、缩进风格、代码风格、设计模式等等继续写下去。很常见的,比如你要写Linux驱动程序,你就要遵守Linux的缩进风格,了解类似的驱动的代码和设备模型,完成自己的工作。最后很有可能还要做成补丁,写commit comments,提交到邮件组,最终可能要反复修改几次,才能被主线接受。多参与和研究一些优秀的C项目,就能很多优秀coder的良好的态度和风格就能影响到你,未来从头开始一个项目时,很多东西就可信手拈来了。在需要的时候,能正确的处理C和汇编、编译器、平台或是其他语言等之间的问题。有时你总会遇到这样的问题,编译出的代码的行为和你想象的不一致。或是同样的代码在PC上运行正常,到设备上就段溢出了。这时你就需要查看反汇编代码来查找问题到底出在哪里,或是用gdbserver远程连过去调试、或者是查看编译器的哪个优化选项把代码给搞砸了(比如前段时间的一个例子)有非常多的问题是在跨平台时遇到的,比如一个参考设计需要能在Win/Linux/Mac上编译,那么你的代码的兼容性要很好。很常见的WinSock和Linux的socket这些底层库要做兼容层等等。我现在基本要求自己尽可能的用C99的标准去实现C程序,这样能够做到非常好的兼容性,因为C并不是一门变化很快的语言。----欢迎补充中国早期的程序员梁肇新曾在《编程高手箴言》 中提到,程序员的最高境界是 “手中无剑,心中也无剑”,也就是“人剑合一”的境界,在此共勉。
很简单确很硬的标准:别人用C/C++做东西,遇到了崩溃/泄漏他搞不定,来找你帮忙,就说明你精通了。
我一个干了十年C/C++编程的人给题主一个温和一点的回答吧: 灵活掌握C的语法规则本身,灵活掌握C库函数,灵活掌握部分常用os api,再加上一点点硬件知识和汇编知识,再有五六年C工作经验,就可以算是精通C语言了。我就知道一说这个话题就有很多人站出来,给精通C设置各种通天台阶。有的说至少得写个os出来,有的从os内核到网络通信罗列一大堆技术名词,有的恨不得说一生下来就开始学C至今不敢说精通……至于吗?C能干的事情确实很多,而且也不止os内核,网络通信什么的。还有流媒体应用、编解码和复用解复用、游戏;还有并行计算(的基础框架,中间件);还有各种基于数学的程序,比如各种模式识别算法等等。但是人生的时间有限,人生也不只是编程,把C能干的事情全罗列一遍,等于没说,或者等于说你永远精通不了。答主你把我前面说的掌握后,找家用C或C++的,技术领先的大公司,在某一个固定的领域干上五六年,然后你再回头看看,会发现用C做研发的人生也不过如此。
所谓的精通C语言,不仅在于了你说的语法层面,更是与C语言相关的一套东西,如*nix内核,网络,编译,体系结构等。建议题主看完相关语法以及你说的《The standard C library》这本书后,可以看看CSAPP,现代操作系统,计算机体系结构,APUE等,后面就是实际项目的演练来达到你说的“精通”了。
你这辈子用得到的部分你都精通,这就够了。
很难的。C语言是很复杂的一个语言。有很多小东西都是800年不会用的,也没什么用,甚至从语言设计上讲,理想状态下就不应该存在。所以,其实不用精通一个语言的。自己写出来的程序跑得快跑得靠谱,容易被理解容易应付多变的用户需求,这就比啥都强了。虽然了解一个语言的邪门功能是常见的装逼手段。自己挖坑自己填上,还是很能提供一些存在感的。
我觉得既然要算精通,那至少应该把ISO-C99的标准文档通读一遍吧?
多年的面试经验:凡是敢在简历上写“精通”xxx语言的, 最后都会被N个人用提前准备好各种必杀问题刁难,最后都很惨每个面试官在看到“精通”xxx语言的时候,第一反应肯定是“看我不问倒你”如果你准备好去面对这一切 那应该是精通了
语言只是工具,看你用工具能做出好的东西,利用产品来体现出你对语言的认识
熟读C语言标准。用C作为主要语言开发N年以上(n待定),在多个平台和多种CPU架构下做过项目并相互移植过,知道且能控制语言从源代码到二进制目标文件的每一个过程,知道一条语句可能会被编译成什么样的汇编代码,知道使用什么样的语句有利于编译器优化。熟练使用常用的库函数。补充:有良好的代码风格,其实这个很重要。想到再写。说精通C语言不只是语言本身,还有语言依赖的工具链,语言的编译过程,甚至一些算法,计算机基础知识,CPU的结构体系等等。因为C语言时偏向于硬件的,所以了解这些硬件相关知识也必不可少了。另外肚子里没那么多别吹精通,遇到牛逼人面试会问死你的。
你就算可以倒背字典也不一定能写出一部小说
我一直不觉得K&R是本好的入门书。去找《C语言:现代方法》吧。
我是专门来看谁宣称自己精通C语言的---------------Update Start----------------我以为我原来的回答很清楚了的(还自认为含蓄,幽默。。。其实我只是不想说的太激烈)。看到评论里提醒我在打酱油的留言,我才明白原来是很多人其实是不明白的。那么我就匿名的补充下吧1 知乎上应该没有人认真的认为自己精通c语言。这年头大牛这个词不值钱,精通不是谁都能用的。2 在快毕业的时候,问出了这个问题,应该也没有机会精通c语言了。3 我在筛简历的时候会这么处理:对于高级职位,简历上写精通c语言 c++语言的,忽略(有国际会议论文或同级别作品的除外)以上为原回复包含的意思。4 对于精通c语言,这个概念不同人的看法不一样。我对这个概念理解如下:
精通c语言就是指精通c语言这门语言本身,精通c语言写算法,精通的是算法。精通c语言写网络协议,精通的是通信协议,能用c语言写kernel的,精通的是操作系统。
能用随便什么语言实现一下C99或者随便什么完整的标准的front- end,应该可以算是对C语言本身的方方面面比较了解了,有语言改进的提案被标准或者某个方言接受,在某个方面应该是专家了。5 对于精通c语言的人例子,一时想不出来。我对C++的事情相对熟悉一点,给你举一个类似的例子感受下吧。有家公司叫做Edison Desgin Group().这家公司名字又山寨,还只有五个人,看着很不起眼。可是其实他们都是C++标准委员会的成员,同时他们公司主营业务是卖(我认为)世界上最好的C++编译器的front-end。(因为代码是c写的)对于EDG的这几位,我觉得可以在简历上写精通了,但是其实他们绝对不会写。顺便讲一下,他们主页的上还有一条很屌的FQA。Q:你们那儿要人吗?A:不要。我们五个人挺好的,没扩大的打算。精通C语言的人,类似吧。。。我好像得了中年痴呆症,最近记忆非常不好,一时想不出来,请题主脑补。6 精通的人可能真的很少吧。我有几年是在做一个商业软件的C/C++的frontend。我们组参与制定了一个国家的C/C++的嵌入式国家标准,可是周围也没看到谁精通所有的。基本上也只能做到了解自己做到的那几章标准。如果非说牛人可能有一个我不认识的先辈。看cvs 提交log,这个哥们几乎三个月左右写了个C/C++的front-end,支持几乎所有的常见的方言。可惜这哥们后来被调去做销售还是行政管理了,学术上就没啥建树。不然这么多年下来,精通应该算得上。7 楼主问的是什么叫精通,我就解释下我理解的精通。就不偏题说推荐什么书,怎么学习了。反正经典也就那么几部。看标准更是看一会就要睡觉。不过这些都无所谓,别老惦记着精通的事儿就好了。---------------Update End----------------
永远不要说你精通了什么。 怎么算精通? 学无止境,有太多的知识了。更何况除了旧知识还有新知识。 现在还记得一位教授的话,不要在简历上写精通二字。
用C写一个*nix,就可以在简历写上精通了。
能写出《谭浩强教你21天精通C语言》
N.E.V.E.R.
望题主保持单身,30岁时定能神功大成
精通C语言,最起码要能以出现就可以让薛某人绕路走。这部教程由C语言中文网站长亲自执笔,将多年的编程经验灌输其中,典型的实践派。
本教程将带你做出一款小游戏&&贪吃蛇,让你学以致用。该游戏不依赖TC环境,不依赖任何第三方库,可以在VC 6.0、VS等常见IDE中编译通过。具体效果请查看示意图:、、。
贪吃蛇下载地址: & &提取密码:ja2n
如果你已经有C语言基础,可以阅读《》来编写带界面的程序。这是我们新推出的一套教程,让大家学以致用,不要认为C语言只能编写&黑乎乎&的控制台程序,它也可以有炫酷的界面。
注意:红色链接为高级教程或项目实践,需要开通VIP会员才能阅读,请。
如果你不希望开通VIP会员,阅读免费教程也可以学习完整的C语言基础知识。
第一部分:C语言基础
第二部分:C语言实践(VIP)
第三部分:C语言高级特性(VIP)
推荐文章 TOP10精通c语言能做什么
我现在只对c语言比较熟悉,而且语言属于工具,所以我想专研一下c语言,不知道做到精通c语言后能做哪方面的工作?
08-12-31 &匿名提问
不知道你所说的精通是一个什么程度.首先C语言是一门基础语言,如果可以熟练的运用C语言就可以理解程序逻辑,对于去学习一些新的高级语言比如C++ JAVA都会很容易.所以建议你在学习C语言之后在去了解一些其他语言方面的知识这样会对今后找工作有很大的帮助现在一般的公司运用的程序语言一般是C++、C#、JAVA另外IT业在国正处于起步阶段,各个公司都需要大量人才,如果你可以熟练的运用程序语言甚至达到精通。找工作应该会很容易的。而且工资比较丰厚。IT业是一项很好的工作,努力学习吧,祝你成功
请登录后再发表评论!
c语言就是一基础学的人海了没什么优势
请登录后再发表评论!
你精通了C语言,就是高手了!C是所有编程语言的基础,是核心。你精通了,我就崇拜你了!
请登录后再发表评论!
单片机的编程可以做
请登录后再发表评论!如何精通C语言?_百度知道
如何精通C语言?
但不知道从哪里下手.,比如说;&#47,学校里开了C语言这门课;}这样一大堆乱七八糟的代码以及函数,听说C语言对自动化这门专业及其重要。比如说我在其他人的源代码里看到了许许多多不懂的知识。我是学自动化专业的,根本就没再课本上见过,int y)&#47:void gotoxy(int x?难道仅仅只看课本就够了?我感觉还好多东西没有学...,我觉得学校里学的还远远不够,想要扩展发展了请各位推荐一些资料(最好是按学习流程的推荐..;SetConsoleCursorPosition(hOut...;HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE),目前课本上的基本知识自己感觉学得还可以。,一定要学到精通才可以.。请问那些精通C语言的大师们或者程序员当初的学习过程是怎么样的呢;光标定位{COORD pos = {x, pos).:时间控制函数、还有一大堆比如、图形编辑,y}.,但是感觉学得好浅好浅
提问者采纳
知道一些皮毛的东西在这里看的话。如果你喜欢c的话,还是要多看书,使用的是系统api编程,这些代码应该是windows sdk的编程代码。如果你喜欢windows sdk编程的话,最多也就学到个语法,这本书由浅至深的教导你windows编程的原理。如果你只是在学校学的c语言是自然看不懂这些的了,多开发自己的思维。在学校学c,我推荐你看Windows程序设计(第5版)。要想有所发展,多练习,我也推荐你看C Primer Plus这本书,这本书也是由浅至深教你c语言的实质
其他类似问题
为您推荐:
其他3条回答
而你的代码里那些没见过的函数是 api 函数,可以留个邮箱给我《C语言程序设计》课本上讲的是 dos 下的编程,我发给你电子书(pdf 格式和 chm 格式的都有)。 推荐一本书《windows程序设计》,还有一个视频 孙鑫的《VC++教程》(一共20集),是极为基础的。
如果楼主需要这部书的话。望楼主采纳,是 windows 下的编程
理科的东西就是多练。多进行上级操作,在程序的调试过程中你会发现你逐渐在进步,可以多借借C语言习题册进行练习与校对。
C++程序设计c++primer
c语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 c语言从入门到精通 的文章

 

随机推荐