首页
时事
民生
政务
教育
文化
科技
财富
体娱
健康
情感
更多
旅行
百科
职场
楼市
企业
乐活
学术
汽车
时尚
创业
美食
幽默
美体
文摘
嵌入式开发初学者,如何学好C语言?
科技
2024-11-13 16:36
山东
学习C语言不是一朝一夕的事情,但也不需要花费十年时间才能精通。如何以最小的代价学习并精通C语言是本文的主题。请注意,即使是“最小的代价”,也绝不是什么捷径,而是以最短的时间取得最多的收获,同时也意味着你需要经历艰苦的过程。
[付费]STM32嵌入式资料包
要读就读好书,否则不如不读
所有初学者面临的第一个问题便是,如何选择教材。好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素。
不幸的是,大学老师通常会帮你指定一本很差劲的C语言课本。而幸运的是,你还可以再次选择,相关书籍
推荐:
嵌入式工程师的100本专业书籍
。
Kernighan和Ritchie的《The C Programming Language》(中译名《C程序设计语言》)堪称经典中的经典,不过旧版的很多内容都已过时,和现在的标准C语言相去甚远,大家一定要看最新的版本,否则不如不看。另外,即使是最经典最权威的书,也没有办法面面俱到,所以手边常备一本《C语言参考手册》是十分必要的。
《C语言参考手册》就是《C Reference Manual》,是C语言标准的详细描述,包括绝大多数C标准库函数的细节,算得上是最好的标准C语言的工具书。顺便提一句,最新的《C程序设计语言》是根据C89标准修订的,而《C语言参考手册》描述的是C99标准,二者可能会有些出入,建议按照C99标准学习。还有一本《C和指针》,写得也是相当地不错,英文名是《Pointers on C》,特别地强调指针的重要性,算是本书的一个特点吧。
不过这本书并不十分适合初学者,如果你曾经学过C语言,有那么一些C语言的基础但又不是很扎实,那么你可以尝试一下这本书。我相信,只要你理解了指针,C语言便不再神秘。
如果你已经啃完了一本C语言教材,想要更进一步,那么有两本书你一定要看。首先是《C Traps and Pitfalls》(中译名《C陷井与缺陷》),很薄的一本小册子,内容非常非常地有趣。要注意一点,这本书是二十多年前写成的,里面提到的很多C语言的缺陷都已被改进,不过能够了解一些历史也不是什么坏事。然后你可以挑战一下《Expert C Programming》(中译名《C专家编程》),书如其名,这本书颇具难度,一旦你仔细读完并能透彻理解,你便可以放心大胆地在简历上写“精通C语言”了。
切记一个原则,不要读自己目前还看不懂的书,那是浪费生命。如果你看不懂,那你一定是缺失了某些必需基础知识。此时,你要仔细分析自己需要补充哪些内容,然后再去书店寻找讲述的这些内容的书籍。把基础知识补充完毕再回头来学习,才会真正的事半功倍。
Unix、Linux还是Windows,这是个很大的问题
不同的编程环境会造就出不同思维的程序员。Windows的程序员大多依赖集成开发环境,比如Visual Studio,而Unix程序员更加钟爱Makefile与控制台。显而易见,集成开发环境更容易上手,在Windows上学习C语言,只需要会按几个基本的Visutal C++工具栏按钮就可以开始写“
Hello, World!
”了,而在Unix下,你需要一些控制台操作的基本知识。
有人也许认为Unix的环境更简洁,但习惯的力量是很大的,大家都很熟悉Windows的基本操作,而为了学习C语言去专门装一个Unix系统,似乎有点不划算。
对于一个只懂得Windows基本操作、连DOS是什么都不知道的新手而言,尽快做一些有趣而有意义的事情才是最重要的。用C语言写一个小程序远比学习ls、cat等命令有趣,况且我们要专注于C语言本身,就不得不暂时忽略一些东西,比如编译链接的过程、Makefile的写法等。
所以我建议初学者以Dev C++作为主要的学习环境,而不要在IDE的使用技巧上过多纠缠,因为今后你一定要转向Unix环境的。Dev C++使用gcc编译器,对C99的标准都支持良好。
等你学完一本C语言的教材,你一定要转向Unix平台继续学习,几乎所有的C语言高级教程都是基于Unix平台的,比如《C专家编程》。转变的过程是痛苦的,你需要面对的是各种纷繁复杂的命令,完全不同于Windows平台的思考方式,但是这种痛苦是值得的。
Unix与C是共生的,Unix的思考方式和习惯更加符合C语言的思考方式和习惯。在Unix下,你可以找到无数优秀的源代码供你尽情阅读,你可以方便地查看某个库函数的联机手册,还可以看到最优秀的代码风格。
归结起来就是一句话:初学C语言,建议使用Windows系统和集成开发环境,在准备向“高手”方向努力时,请先转向Unix平台。
学习方法
书已选定,环境配置完成,正所谓万事俱备,只欠你自己的努力了。请从书的前言开始,仔细地阅读手头的教材,很多人看书喜欢直接从第一章开始看,这是错误的做法。前言是作者对整本书的大体介绍,作者一般会告诉你需要什么基础才能够顺利阅读本书,这可以帮助你检验自己的基础知识是否已经具备。看完前言,还要浏览一下目录,了解一下书的整体结构,顺便给自己安排一下学习计划。
学习C语言,必须注意每一个细节,书上的例子代码一定要自己亲自敲一遍,编译执行输出都跟书上说的一致才能算是学完了一个例子,如果不一致,就要仔细找原因,相关文章
推荐:
整理的比较全面的C语言入门笔记!
除
了书本上有的例子,自己还要“创造”一些例子,做到举一反三。
自己抄的书上的例子以及自己“创造”的例子,都应该仔细地归类保存,并且要在源代码中写上简短的注释,阐述这个例子的意图。
作者通常会在习题中说明一些重要的道理,而不是单纯地检验前面的知识。
所以,熟悉例子之后做习题,建议初学者把所有的习题都独立做一遍,然后对照答案的代码,看看代码有哪些不足,再试着修改。
也许你认为这样学习太慢,其实不然。学得细致就不用走回头路,等你学到后面才发现自己前面没搞清楚,那才是真的得不偿失。一般说来,整本书读完,你应该完成数千行乃至上万行的代码,无论是原封不动照抄书上的,还是自己心血来潮写就的,都是今后继续学习的一笔财富。所谓好记性不如烂笔头,就是这个道理。
仔细读书、认真抄写源代码、独立完成习题以及更进一步的实验,最后将所有的代码留下,成为自己的经验和财富。过程很辛苦,却事半功倍。
http://mp.weixin.qq.com/s?__biz=MzI1MDg4OTMwMw==&mid=2247525582&idx=1&sn=dc7a438de4b34e292a0c551a8af84c86
STM32嵌入式开发
STM32嵌入式,PCB电路图,C语言,单片机,Matlab,Linux
最新文章
详解STM32在线IAP升级
总结单片机电路设计要点
认识地弹(地噪声)
硬件工程师VS软件工程师
STM32嵌入式开发中的RTOS,你用过哪些?
巧用数字万用表
经典的结构体和联合体共用实例
差模放大电路特点与抑制零漂原理
嵌入式代码经常产生bug的原因
如果模拟电路设计分九段,你是几段?
19个常用的5V转3.3V技巧
MOS管驱动电路有几种,看完就明白了
十年经验的大神谈如何学STM32嵌入式开发
设计降压转换电路?工作原理+设计步骤
假如C与C++是两把菜刀
分析稳压二极管常见应用电路
EMC防护中的滤波电容
详解嵌入式开发中的I2C总线
STM32代码远程升级之IAP编程
三相电对地电压
STM32单片机开发中的RTOS
RS485通信的收发控制
开关如何变成的CPU?
详解CAN总线
STM32代码的启动过程
STM32如何分配原理图IO
开关电源里特殊电子元件的类型和用途总结
EEPROM和Flash这样讲,我早就懂了
如何解密单片机内程序?
电路设计-硬件工程师画PCB时要了解的设计建议
梳理STM32芯片的内部架构
STM32如何分配原理图IO
用三极管实现LED闪光灯经典电路
分享两种单片机编程思想
STM32怎么选型
理解STM32控制中常见的PID算法
了解SRAM跟DRAM的区别在哪里
STM32开发中的五大嵌入式系统
单片机程序代码该如何优化?
硬件工程师的崩溃日常
EMC防护中的滤波电容
介绍PID各种算法的优缺点
C语言中结构体struct的用法
单片机中如何用二极管实现不同电压的输出?
步进电机的结构和控制模式
C语言中枚举enum的用法
不同类型单片机之间如何通信?
嵌入式开发初学者,如何学好C语言?
画PCB板时阻抗设计的重要性
用一堆开关做成一个CPU?
分类
时事
民生
政务
教育
文化
科技
财富
体娱
健康
情感
旅行
百科
职场
楼市
企业
乐活
学术
汽车
时尚
创业
美食
幽默
美体
文摘
原创标签
时事
社会
财经
军事
教育
体育
科技
汽车
科学
房产
搞笑
综艺
明星
音乐
动漫
游戏
时尚
健康
旅游
美食
生活
摄影
宠物
职场
育儿
情感
小说
曲艺
文化
历史
三农
文学
娱乐
电影
视频
图片
新闻
宗教
电视剧
纪录片
广告创意
壁纸头像
心灵鸡汤
星座命理
教育培训
艺术文化
金融财经
健康医疗
美妆时尚
餐饮美食
母婴育儿
社会新闻
工业农业
时事政治
星座占卜
幽默笑话
独立短篇
连载作品
文化历史
科技互联网
发布位置
广东
北京
山东
江苏
河南
浙江
山西
福建
河北
上海
四川
陕西
湖南
安徽
湖北
内蒙古
江西
云南
广西
甘肃
辽宁
黑龙江
贵州
新疆
重庆
吉林
天津
海南
青海
宁夏
西藏
香港
澳门
台湾
美国
加拿大
澳大利亚
日本
新加坡
英国
西班牙
新西兰
韩国
泰国
法国
德国
意大利
缅甸
菲律宾
马来西亚
越南
荷兰
柬埔寨
俄罗斯
巴西
智利
卢森堡
芬兰
瑞典
比利时
瑞士
土耳其
斐济
挪威
朝鲜
尼日利亚
阿根廷
匈牙利
爱尔兰
印度
老挝
葡萄牙
乌克兰
印度尼西亚
哈萨克斯坦
塔吉克斯坦
希腊
南非
蒙古
奥地利
肯尼亚
加纳
丹麦
津巴布韦
埃及
坦桑尼亚
捷克
阿联酋
安哥拉