很多初学C语言的小伙伴,在学习之初并没有一个大概的概念,学习这门语言需要掌握多少知识点,怎么才算学的差不多?

C语言的精髓点在哪? 学到多少东西才能够达到做项目的标准?学习的时候需要注意哪些细节点?疑问太多以至于压得自己喘不过气来。小编从项目的角度分析C语言到底需要掌握哪些知识,为什么要去掌握这些点,怎么去掌握,在此尝试着总结以下几点,未必都是对的,起码可以做到亲身经历。基本的数据操作,运算规则,常见程序结构设计

很多人觉得这么几点我都看了多少遍了,早就烂熟于心了。举个简单的例子,printf打印可能是最常使用的函数了,但是这个函数在真正大型工程中,很少直接去调用,为什么?

主要项目中涉及到封装的概念,什么时机加入打印在调试大型系统的时候,更容易定位问题,这些编程思维对于初学者来说很难接触到,也很难想到,任何复杂的事物都是由简单的细节环绕而成,在学习之初不要觉得这些很简单的数据操作很简单,要真正纳入自己的知识体系还是需要花点心思。可以在学习的时候,网上搜一些资料看这些数据操作以及运算规则是如何使用具体的场景中。

很多人初学者可能会有疑问觉得去哪里找这些代码去,世界软件发展了这么多年,最不缺的就是代码,在github或者开源中国里面代码多如牛毛。学习的对象也是数不胜数。有点扯远了,这触及到另外一个学习编程的步骤,学会看懂别人的代码,然后才能尝试写出优质的代码,知己知彼百战不殆。曾经听一个编码高手说过“技术这东西只要花的时间长,肯下功夫早晚都能搞定,只要进入状态了,什么方法都能想的出来”,看书学习也罢,看视频学习也罢,需要让自己插上联想的翅膀,把自己的思维境界打开。

说到运算规则,涉及到代码的格式的问题,说说身边人的事情,去年招了一个刚毕业的学生,基本功不是很好,但是有一个特质专注力很高,能沉得住气。当初见第一眼就觉得是个做软件的苗子,有了第一印象后面的事情就顺理成章了。很多经验不是很足的同学,参加面试回答的问题也不是很理想,但还是被录取了,其中一个因素就是你身上有公司需要的基因,这多少算来有点运气的成分在里面了。今年这哥们觉得很突然,说为啥当初刚开始写代码的时候为啥不要求那么严格,说了几句话,初学者特别是基础很差的情况下,要求太多只会让一个人慢慢失去对这个行业的信心,也许会错失一个软件天才。随着时间推移能够迈入轨道了,那么就该要求一些基本的职业素养了,代码的格式,就该要求了。很多初学者觉得写的代码越高深,越让人看不懂才叫高手,有这种想法的趁早打住。大道至简,这四个字在任何时候都不过时。做的复杂逻辑混乱只能说明当初在设计的时候,没有彻底想明白,想明白了展示出来一般都比较舒坦平整。其实做为一个学习者,有一个学习的氛围跟一个交流圈子特别重要这里我推荐一个C语言C++交流群583650410,不管你是小白还是转行人士欢迎入驻,大家一起交流成长。

指针,数组,结构体,枚举灵活运用

不要只看这几个字,几乎是C语言里面最精髓的代表。数组这个概念基本上还能理解透彻,说到指针这个应用场景太多,而且在什么项目中几乎都离不开指针的使用。变化无穷,会用的觉得其乐无穷,不懂的哭上天。记得在互联网有个流传很长时间的文章,林锐的我的大学十年(有兴趣的同学可以去网上查阅,编程的人生也可以很彪悍,记得当初发烧期间还专门买了林锐的一本高质量编程)提到了做了一个C语言的项目,为了绕开指针最后全部用数组代替实现了,后来做的项目也黄了。不是说因为用数组使用就不行,项目的定位方向出问题了。用数组完全替代指针这条路也是可行的,但是会花费相当大的周折。

说到指针,不能不提到计算机专业开的另外一个课程,数据结构。数据结构就是原生数据或者组合数据的混合运用的一种规则集合。连接这些数据,将这些数据有机的串联在一起,指针起到非常关键的作用。经常见到初学者说数据结构和天书差不多,几乎看不懂,建议回炉好好学习指针,说到指针还是存在很多故事,在入门之初有幸遇到一位水平极高的老手带着,基本功扎实的不得了,记得有一次使用指针忘记初始化,这老手叹了口气,当年我每次用指针错一次,就被项目经理当众批评一次,后来再也不敢不初始化使用了,所以印象才能这么深刻,话说到这里刚入门的小白挨多少批评或者鄙视,是最正常不过的事情了,这对于编程界来说稀松平常。

结构体在项目中用的特别多,很多初学者觉得结构体都在教材的最后章节,觉得不是那么重要。其实结构体在一定层次上决定着软件的脉络框架。很多高手在设计模块的时候,不是急急忙忙的写代码,而是先把头文件里面的结构体设计出来,简单的来说就是把数据模型先搞起来。有个数据模型代码实现起来就比较轻松了。面向对象里面类的老祖宗就是结构体延伸来的。关于结构体如何赋值,包含着指针的情况下,如何赋值这些都是常见的初学者经常容易掉的坑。枚举一般用在罗列不同类别,存在多个相同功能的实物,搭配switch使用的很多,在这就不一一列举了。

函数的使用

函数是面向过程编程最基本的单位,任何C程序的运行都有函数的身影,因为程序的入口main就是一个函数,函数传值方式,调用方式(递归,回调)都是函数内在的表现。函数的里面又可以嵌套别的函数,使得程序慢慢变得复杂化。前几天和一个非计算机专业的聊天,谈到如何学习函数,说到了数学不好是不是编程不好学。函数的编程基本因子,和数学里面的函数有一定的共性,但编程里面的含义引申的层次更多,数学在一定层面就是提供一个工具或者方法而已,函数的设计里面夹杂着诸多的编程思想。

检验一个程序员水平的高低可以简单让用函数实现一个相对复杂一些的功能,基本上就能看出编程思想掌握的深浅程度。不妨自己实现一个函数,检验下自己编程水准,函数的检验是面试里面必不可少的题目。

一个函数基本上代表一个小的模块,多个模块有机的组合形成一个系统。建议初学者在学习函数的时候,不要满足于会使用函数,还要让自己站的层次更高一点。这能决定自己是一个纯粹的执行者还是未来框架的设计者,不要觉得这些东西距离自己很远,慢慢的积累时间长了,慢慢也就从量变变成质变了。其实做为一个学习者,有一个学习的氛围跟一个交流圈子特别重要这里我推荐一个C语言C++交流群583650410,不管你是小白还是转行人士欢迎入驻,大家一起交流成长。

对于内存和性能有少许的理解

内存和性能对于初学者来说,可能觉得很遥远,其实这两样东西贯穿整个编码界,检验软件功能最重要的两项指标,软件占用内存多少,运行时间长了会不会让系统变缓慢。同时开启在多个软件的时候,你设计的软件是不是变得很卡顿,这些都是大家平常在使用软件时候经常遇见的现象。今天在车上闲聊,司机说当年的XP运行的多好,非要升级搞什么windows7或者windows10之类的,把电脑搞的卡的要死。这其实是微软操作系统设计理念的一个延伸,用空间换时间。说的通俗点,提前把一些常见的软件加载到内存里面,使用的时候流畅度会感觉好一些,理念这么好,为啥还变得这么卡慢,主要机器配置太低了。微软这帮大佬认为你机器内存和CPU还是相当不错的,因为现在硬件成本基本上接近白菜价了。在机器配置还不错的情况下,windows7,10运行的速度还是很不错的。透过这些生活常识,归结对编程,对编码的认知程度上,慢慢就会建立起自己的知识体系。

这点在嵌入式设备上表现的很明显,一般嵌入式设备内存和cpu配置不是高,内存就要省着点用,占用CPU很高的一些函数尽量少去调用,避开雷区,这些经验就要靠平时多去积累,多去思考,才会融入自己知识体系,才会慢慢认识到写代码其实在编程时候,只占很小的一部分,大部分的时间还是在思考如何让代码更加利索,内存更少的去使用,cpu占用率低一些。认识到这些时候,层次就不一样了,就会越来越觉得设计思想的重要性了。

唠唠叨叨说了以上四点,可能和里面具体的概念不是很搭边,主要站在项目的角度上做了一些延伸,从项目的角度去认识一些基本的概念,让初学者在学习的时候,有个大致的认识。在知识层次上面稍微做了一些拉伸。稍微上了一点高度,渗入了一些编程思想。希望初学者对此有一个更加深刻一点的认识,不要拘泥于语法的限制,编程语言服务于编程思想。学到了真正的编程思想,才叫货真价实的懂编程。

怎么样才能做C语言项目?相关推荐

  1. c语言项目研发实训设计,关于软件设计实训心得体会(通用5篇)

    关于软件设计实训心得体会(通用5篇) 当我们经过反思,对生活有了新的看法时,往往会写一篇心得体会,这样能够让人头脑更加清醒,目标更加明确.那么好的心得体会都具备一些什么特点呢?以下是小编精心整理的关于 ...

  2. 怎么才能知道自己适合做项目经理?怎么做合格的项目经理?

    小M了解了项目经理的职责,虽然觉得非常有挑战,但这些事情都是自己感兴趣的.因此,更加坚定地想成为一名项目经理. 但是,项目经理是条无悔路,后面可能遇到的网难无数,如果半路发现实际情况和最初想象有很大的 ...

  3. 如何做一个软件项目经理? ----写给公司所有的开发人员

    第一部分:软件项目经理的要求 首先是一个管理者,其次熟悉某些工具,某几种语言,行业背景,项目管理技能. 软件项目经理面临的恶劣环境,我们绝大部分软件企业运行在相对混乱的状态(CMM一级),组织不大可能 ...

  4. 关于C语言项目的一点心得体会

    关于C语言项目的一点心得体会 作为一个C语言初学者,最近做了好几个C语言项目,也对编程有了更深层次地理解,其中也遇到了很多问题,今天我会记录一下自己经常犯的错和在项目中遇到的问题. 输入缓冲区问题 这 ...

  5. 专访微软全球资深副总裁:中国AI正在爆发式崛起,千万不要复制美国,要建立自己的模式,才能做领导者

    记者 | 周翔 编辑 | 鸽子 近日,在微软亚洲研究院与哈工大共同举办的第十九届"二十一世纪的计算"国际学术研讨会上, Peter Lee 博士作为微软全球资深副总裁, 也来到了现 ...

  6. goland/go语言项目--本地包的导入(将项目添加至GOPATH中)(基于macOS)

    goland/go语言项目–本地包的导入(将项目添加至GOPATH中)(macOS) 1. 创建项目 首先,在桌面上创建一个文件夹G0Project,从而创建项目. //利用go mod进行初始化项目 ...

  7. [开源] C语言项目实战 - 虚拟鼠标 - VirtualMouse

    C语言项目实战 - 虚拟鼠标 - VirtualMouse 目录 关于软件 软件介绍 使用帮助 项目介绍 源码及软件下载 知识点扫描 热键的使用 鼠标事件的模拟 字体的选用 开机自启动的设置 为软件添 ...

  8. 没学过python、但是还是有公司要-学习python 基础都会了 为什么还是做不出项目呢?...

    原标题:学习python 基础都会了 为什么还是做不出项目呢? Python是一门足够简单但又非常强大的程序语言,应用领域甲冠天下,在WEB开发.WEB爬虫.科学计算.人工智能.云计算.数据分析.数据 ...

  9. 新做了一个项目,一个人做的,关于数据传输的项目(架构说明)

    HI,很久没有写博客了,因为最近在做一个大项目,之所以说它大,是因为它是我一个人干的,做的挺吃力的,呵呵,做的过程中,我感觉,我确实是一个干事主义者,呵呵. 项目结果图 新技术 用到了一个新的技术th ...

最新文章

  1. Java项目:在线小说阅读系统(读者+作者+管理员)(java+SSM+jsp+mysql+maven)
  2. 内存错误 处理 [CAlayer release]
  3. 一篇文章搞定面试中的二叉树
  4. webpack 谷歌地图_如何在Webpack中设置可靠且可维护的Google Analytics(分析)
  5. html垂直边距,html – Styling Bootstrap的btn-group-justified,添加边距和垂直尺寸
  6. 高中必背88个数学公式_俞敏洪:高中干货“必背”1920个固定搭配,英语稳上145分...
  7. ES6 javascript 实用开发技巧
  8. IDEA Junit测试
  9. 2020 恒生电子 面经
  10. 僵尸进程以及如何处理僵尸进程
  11. cdrx8如何批量导出jpg_cdrx8如何批量导出jpg_办公软件操作技巧022:如何从word文档中批量导出多张图片......
  12. leetcode *1818. 绝对差值和(2021.7.14)
  13. 高德地图的画图表,加文字,画线,测距
  14. 【某易易盾JS逆向】滑动验证码分析
  15. 基于Android开发的仿网易云播放器
  16. c3p0连接池报错 A client timed out while waiting
  17. 红旗Linux11安装教程,使用U盘制作红旗Linux 11桌面系统Live CD启动盘的方法
  18. php读写excel文件
  19. java生成dat文件怎么打开_可以使用哪个软件工具打开Java程序生成的dat数据文件?...
  20. win7旗舰版64位下完美安装和破解loadrunner11

热门文章

  1. java collections wiki_Java中的集合
  2. 第七章 组合数据类型
  3. 白帽子讲Web安全——客户端安全
  4. 狂风汉化百宝箱xp 官方
  5. 【对号入座,看看自己差距】
  6. IBM3650 5M 读取硬盘不成功
  7. 微信小程序与C#语言的Asp.net后台的传输
  8. reportlab drawImage
  9. [Python] 逻辑回归分析
  10. 计算机专业跨考教育学硕士,2017跨专业考教育学硕士的3个优势