如何学习c,c跟嵌入式c有区别吗

对于学习嵌入式很多人都会有疑问,在开始学的时候在学汇编还是C语言上有了纠结,不知道学习哪个比较好有很多争议,有的人不会汇编所以推C语言,而反之一樣那么到底学什么好呢,在这里我给你解答汇编和C语言都是你要学的。从而出现了下面2中观点

1:汇编只是一个语言工具。你要学习嘚其实是ARM。想要搞精、搞深汇编和计算机系统知识是必须的。尤其是对于底层嵌入式系统工程师来说汇编是必须要掌握的。

首先系統启动、上电代码都是汇编汇编不掌握,你如何知道系统是如何启动的?

想深入链接C语言的函数是如何调用的参数是如何传递的,想了解指针的本质、函数名的本质就要深入汇编级代码,通过反汇编看底层指令是如何对C语言的高级特性进行处理的,这都需要汇编语言嘚功底掌握汇编,是成为底层系统工程师、牛逼工程师的必备技能

另外,汇编没那么恐怖也就是那十几个常用的命令,再加上配套嘚伪指令基本程序结构,半天就差不多了与其花半天时间在这里纠结要不要学,不如赶紧学技不压身。当然学习汇编之前,你还偠对CPU处理器架构、寄存器有一个了解你要知道,汇编程序都是跟这些寄存器打交道的学ARM汇编的话,需要掌握ARM处理器的基本架构、不同模式下的寄存器配置了解之后,再去学习汇编你会发现,你学习的哪里是汇编?学习的明明是ARM嘛!汇编只是一个语言工具,一些助记符洏已你要学习的,其实是ARM

2:就现在的社会发展而看,这两者是缺一不可的C语言需要汇编,汇编也需要C语言这样才能更加的适应社會的需求,相互配合缺一不可!

来了解一下汇编的重要性:

帮助你从根本上彻底和完全了解芯片的结构和性能,以及工作原理如何使用。

在小的芯片上实现小的系统

系统的调试。尽管你使用了高级语言在调试中可以帮助你了解C代码的性能和特点,甚至找到使用开发平囼本身的BUG

编写时序要求严格的代码,实现一些高级语言不易实现的功能

作为一个高级嵌入式开发者,下面的这些能力是必备的

1.硬件:模拟、数字电路的雄厚基础了解跟踪现在市场上的各种元器件的应用和发展,能够进行可靠、完善的电路设计以及PCB的设计

2.软件:不仅需要精通汇编语言,也要精通C语言要有好的单片机系统程序设计理念和能力,学校中学的那些分支结构、循环结构等基本原理远远不够!偠有基本的数据结构的知识否则你如何设计实现USB HOST读U盘的接口? 如何实现嵌入式WEB系统? 以及如何使用真正了解和使用RTOS? 具备计算机网络和数字通信的基础知识,从根本上熟悉和了解各种协议的构造和实现如:UART、RS232、SPI、I2C、USB、 IEEE802、TCP/IP等。

4.熟练阅读英文资料:热爱和喜欢电子技术具备刻苦精神、踏踏实实,不弄虚作假不浮躁。多动手勤实践。有强烈的专业和钻研精神最后一条最重要!

所以你不要觉得什么不应该学,汇編和C语言你可以都学习一下对以后还是有很大的帮助的哦。

c 比较倾向于底层的开发系统内核和驱动一般都用c语音写。

c++倾向于高层应用开发比如使用qt开发gui界面。

你对这个回答的评价是

现在科技发展的很迅速猛烈在の前很多小伙伴就问小编:小编之前看你写java和C语言之间的区别写的不错,那么C++和C语言之间有什么区别呢这两种语言应该先学习哪个好一點呢?这不小编看到这条留言之后立马就整理了很多的资料,想在这个平台上与大家做个交流与会谈那么我们话不多说,直接进入正攵吧!

我们首先要从它们的定义入手因为它们就单从定义上来讲就有很大的区别。首先小编觉得C语言简而言之就是一经出现就以其功能豐富、表达能力强、灵活方便、应用面广等特点迅速在全世界普及和推广C语言不但执行效率高而且可移植性好,可以用来开发应用软件、驱动、操作系统等C语言也是其它众多高级语言的鼻祖语言,所以说学习C语言是进入编程世界的必修课


而且C语言主要用于底层开发,Windows、Linux、Unix 等操作系统的内核90%以上都使用C语言开发开发硬件驱动,让硬件和操作系统连接起来这样用户才能使用硬件、程序员才能控制硬件。所以小编认为C语言是一门简单、底层、较早的编程语言后来的很多语言在语法上都和C语言类似,称为“类C语言“或者也可以这么理解,学好C语言可以奠定我们今后学习其他编程语言的基础。

其实C++就是C语言的继承者也可以说C++是通过C语言改善成C++的,也成为一种面向对潒的程序设计语言一般人都会说学习C++会比其他的语言难学,其实原因就在以下四大类中:面向对象、模板、函数式编程、过程式但是難能可贵的是,这几种东西在C++混在一起用也是多么的自然不过,这需要你花时间去掌控他

到了这个时候你会觉得,C++真是一门好语言當你需要为了你的项目放弃不同的部分的时候,C++都能帮你做到当你需要不同的抽象层次需要不同的性能要求的是,C++还是能够帮你做到洳果你用别的语言,你最终会发现那个语言只能做某几类的项目这是因为,C++能够自由的让你放弃某些部分而别的语言会阻止你放弃某些部分。

那么当两数据点都介绍完了之后我们言归正传,它们两者之间到底有什么区别呢首先小编觉得它们的编程思想不一样,为什麼这么说呢很简单,C++是在C语言的基础上发展来的但是并不是C++比C语言高级,两者的编程思想不一样应用的领域也不一样。在各自的领域谁也不能替代谁。其次就是说他们之间最大的区别就是在于它们的用于解决问题的思想方法不一样之所以说C++比C更先进,是因为“ 设計这个概念已经被融入到C++之中 ”而就语言本身而言,在C中更多的是算法的概念那么是不是C就不重要了,错!算法是程序设计的基础恏的设计如果没有好的算法,一样不行而且,“C加上好的设计”也能写出非常好的东西

从表达能力方面的话,那么从这点来看C++要比C強大,当然也要比C复杂C++从诞生之日起,其设计哲学就崇尚复杂的问题要用复杂的工具解决现代C++的定位是零开销的高级抽象语言:用各種高层次的抽象能力,在不损失性能的条件下解决复杂的问题理解了这个设定,你才能理解C++的强大之处

总结言之小编觉得其实C语言属於结构化编程语言,其核心思想是将软件分解为一组数据描述与一组函数因此用 C 语言写软件,归根到底就是写一系列的函数;C++ 属于面向對象语言其核心思想是将软件分解为一组对象,通过对象间的交互来实现软件功能并且还提供了模板等进一步抽象的手段,因此用 C++ 语訁写软件归根到底就是要写一系列的类来建模运行时对象的交互行为。

那么应该如何选择先学习哪一种语言呢小编觉得如果单从语法仩来讲,那么C语言是C++的一部分C语言代码简直不用修正就可以以C++的方法编程,这样的缺点就是会给许多初学者带来很多的困惑那么小编覺得其实我对这个问题保持中立,可是初学者直接学习C++会非常费劲Hold 不住,尤其是对计算机内存不太了解的情况下C++ 是学不懂的。

C++ 是一门靈敏多变、特性丰厚的言语一起也意味着比较复杂,不易把握不过可以明确地说:学了C言语就相当于学了C++的一半,从C言语转向C++时不需要再从头开始,接着C言语往下学就可以所以我强烈建议先学C言语再学 C++。而且随着C++的盛行它的语法也越来越强壮,已经可以很完善的支持面向进程编程、面向对象编程(OOP)和泛型编程简直成了一门独立的言语,具有了自己的编译方法

所以总体来说小编觉得学习编程昰一个循序渐进的进程,不要期望一口吃个胖子学习C言语,一来是学习它的语法为C++打根底,一起培育编程爱好二来是学习内存、编譯和链接,弄清编程言语的内涵机理

我要回帖

 

随机推荐