我眼中的c++编程总结-20150602

断断续续的学习了非常多东西,有51、Avr、ARM、PLC、C\C++、C#、TB、MC、mql4、linux....等等,近乎填鸭或者囫囵吞枣的、甚至饿狼般的扑到里面,慢慢的积累和理解中,非常多知识点都有感性的认识,或多或少的理解一些,也许是为了记忆罢了。将这些知识点整理收集一下。算是做个阶段性质的总结

也非常的欢迎各个行业的专家或者大神可以发现本文的一些我理解的错误,能给我留言,由于我是缺乏对非常多知识的总体把握。仅仅是想当然的就这么理解了,有些是查过资料的。有些可能没查资料或者没资料可查,由于也不是专业的科班出身,也没学过太多的文字修辞,所以说的近乎大白话。也就这么招吧

1:从单片机到编译器说起

针对各个编译要求,电脑上装的编译器主要是DEV-C++。VS2012,KEIL V5。以及虚拟机下的red linux和linux 下的GCC

用的比較多的还是keil,vs2012。gcc这三款

有时候在想,什么是编译器呢,为什么我定义个printf下。屏幕上就会显示指定格式的字符呢

首先得回到单板机,我理解的单板机就是一个控制芯片+一堆外围电路。而我用的keil编译器。它里面包括有控制芯片相应的头文件,头文件将非常多的输入输出port所有定义成能够读懂的宏和变量,并且晶振的频率来达到程序的循环。晶振的振荡频率大小决定单片机的运算速度,当然也和控制芯片本身的设计有关。比方晶振大于24MHZ就能够出错等等,有了这个控制芯片,控制芯片里面内置了非常多寄存器。而早期的编译器。就是通过简单的机器码的编写,plc上的接口电压类似。输出每一个针脚的电压电流来控制电路的

可是因为机器码编写比較困难,并且特别的繁冗,可能后来的开发者就将一些接口集体分类,打包,然后在总体的接口上实现跳转,类似如今才汇编语言,这样的编程已经大大的攻克了机器码编写的问题。可是它和硬件接触紧密,并且可读性很不好,对编码人员的要求比較高。这个时候大致在1965年左右

后来出现了b语言,我没有接触过,加上单板机的控制芯片和外围的电路的日益完好,硬件方面已经出现了更加复杂的逻辑,通过汇编可能project量特别的大。并且特别不easy维护,b语言也许就是更加抽象的,他可能定义了一些基础的数据,可能为了规避汇编的一些缺点。定义一些数据往寄存器中读写,这就是非常大的进步,也可能是汇编和b语言过度有其它的语言,至少这个理念是质的变化,它将人从重复的机器port中解放出来

b语言发展了几年。他的问题可能也慢慢的显示出来。毕竟它仅仅是解决汇编的一些问题,在1971年左右。一群美国的试验人员改进b语言,或者仅仅是利用b语言的变量或者常量的理念。将b语言更加的规范,或者说是直接开发出还有一种b语言,只是他们取名为c语言,由于他们觉的这个更加抽象。更加规范

单板机或者说硬件方面更加的完好,控制芯片的逻辑性更加的强。c语言的抽象性或者说可读性一出来就立即得到广泛的应用

这里得说一下这个c语言或者b语言和汇编的主要差别:当然这也是个人的理解,对于这两门语言我也是略懂。也欢迎专家的指正

汇编主要是定义各个寄存器之间的跳转,以及依据各个寄存器的功能,进行简单的运算,它是基于计算机的硬件方面来接受和操控寄存器中的内容的,所以说那个时候的程序猿。须要理解各个寄存器之间的跳转和运算,基于硬件的限制相对照较高

可是c语言也许改变了这一点,它的设计理念就是脱离硬件而设计的。它自身定义了一些特殊的数据类型,比方整形,4个字节,来规定二级制的一些列的数据,这个通过编译器内核的编写来实现,它定义了bool型的数据类型,来表示与非门,关于小数,它又一次的制定了小数的存储标准。定义了双精度和单精度,而且为这个数据类型留下了8个字节的内存空间。它还规定了内存对齐的规则。总之。这些都是一个编译器须要定义的东西,可能在这个编程语言的标准库中,然后对于编译生成的文件,编译器还必须有连接器,将生成的二级制文件和机器的硬件连接,这个连接的标准,各个开发语言上都有明白的规范,所以说c或者b语言,将编译环境和硬件分离,而且制定一系列的数据类型,而且通过一些操作符,将这些数据类型写入硬件,这也许就是我们说的堆栈方面的知识了,通过编译器编译成二进制文件,然后通过连接器连接

所以说c语言的出现,或者说c语言的开发理念的出现,能够说是编程的一大进步。

以上全部的时间都是1979年前的事情了

经过几年的发展,机器的硬件有了非常大的发展,并且硬件方面也许已经出现了多级分化

截止上世纪80年代,那时候的计算机环境大致例如以下:中国刚开放大学 。那是时候苹果和微软还没有出现。比尔盖茨那时候也许正在开发dos系统,ibm仍是it的老大。乔布斯可能还在上学。硬件已经发展到多元化的级别。相同的一个美国的大学生正在准备自己的毕业论文。他也许认为c语言用的不爽。也不清楚怎么的,面向对象的思维出如今这个大学生脑袋里面。他開始改进c语言。在c语言的基础上添加了类,继承,派生等特性。将c语言由先前的面向过程直接面向对象,这样的面向对象的思维,绝对不是简简单单的说添加特性那么简单,就是一个思维的全然改变,个人感觉c语言是将世界织成一张网。可是c++全然将世界分成了块

又经过了非常多年的发展,美国成立了c++标准委员会,专门制定c++的标准。标准在98年成了一个标准,后面有03版本号了11版本号。这里不提了

硬件方面发展迅速。開始了多元化,有先前的简单控制芯片。发展成了如今电脑的cpu I7,E5,简单的外围电路。也有多样化,本来的控制按键发展出了电脑键盘。eeprom可能升级成了如今的机械和ssd,笨拙的1602可能是如今诸多显示器的一个过程。有了8个G,16个G的暂时数据存储设备,当然也有发展到别处的,比方三菱公司的plc板,走的就是工控线路,手机的控制芯片则是不同的分支

90年代中期。出现了非常多别的语言。针对c/C++的繁琐和一些操作的复杂,出现了非常多编程语言。更加方便的实现客户开发

c++方面出现了vc6.0。dev-c++。gcc等多种编程环境

2:c++包括哪些东西

这个是我写这篇文字的核心。究竟是什么呢,须要了解c++的哪些东西才算是掌握c++呢

前面大致的了解了c++的理念,主要是通过一些数据类型来控制硬件相关的。所以,大致的将c++包括的哪些东西归纳一下

1、一连串的理解

c++定义了四种主要的数据类型int、float、char、bool 在这基础了拓展了非常多的数据类型,通过新定义或者加修饰符等方法。这里不提 。这些数据类型都是通过入栈进入内存,在内存中存储的,为了方便管理这些数据,c++又定义了指针,也就是这些数据的内存的编号,为了方便找到他们。为了方便他们的转换或者说是訪问,规定了两个符号,一个是星号”*“,一个是取地址符"&",为了更好的管理资源,对于一些数据类型同样的数据类型。c++引进了数组的概念,相应的也有了数组的指针

有了上面的数据类型。也就须要对他们的关系做个推断或者对他们进行运算,c++引进了运算符和一些操作符。

一些成型的算法,c++引进了函数,以及函数的參数和返回值,等一系列的传參返回的操作,为c++的灵活性提供了很多其它的方便

对于一些特定的数据类型。为了方便更好的管理,c++加入了枚举,结构体。类等一些复杂的数据类型,当然,这些类型也有地址。也有指针方面的运算等等,这些聚在一起的数据也得有些特性吧,于是c++针对这些复合类型的数据,定义了了公开,保护,和私有的权限,关于各个复合结构之间的关系,有公共关系,友元关系等等

这些复合的结构体为了方便一些特性的传输或者说是特性之间的传输,c++引进了继承和派生,函数方面引进了重载等多个特性

可是这些依然对一些类别进行了限制,还不能更抽象的表现编程的思维。c++引进了虚函数和纯虚函数,对类的多态性做了强大的补充,使类更加的抽象和灵活

类以及函数之间为了更加的脱离一些数据类型的困扰,也为了更加的抽象,c++引进了模板

上面的工作是足够的灵活了,c++为了更加精简代码的量,也为了更加方便代码的可读性,定义了预编译头和一些宏定义

为了更加方便一些操作,c++规定了c++标准库,对算法,容器。IO。调试,c兼容方面做了全方面的补充

以上就是c++语言里面全部的内容,在列表分下类

1:数据操作类:简单数据。数组,指针,运算符。操作符,函数

2:复合数据:结构体和类,权限,继承和派生,多态,重载

3:标准方面:c++标准库,预编译和宏定义,调试

,

时间: 2024-10-29 11:35:53

我眼中的c++编程总结-20150602的相关文章

OSChina 周四乱弹 —— 没女朋友,还不让做春梦?

愚人节过去了,有多少同学偷偷摸摸地向女神表白了?你们又收到了多少张好人卡?如果在愚人节还没有人跟你表白,小小编觉得你这一年也不会有什么桃花运了. @EvaKing:好吧,转发. OSC 就在主页上懂了那么一点点手脚就把你吓成这样 @红薯没我帅:@红薯   赔我笔记本电脑打开osc页面掉下来了,吓我一跳,害我把豆浆喷到键盘上了,短路烧掉了昨晚加班敢的代码没提交,老大说等下找我-你赔我电脑 电脑烧掉不要紧,只要梦想在,你就拥有全世界 @Force武装卫队:愚人节计划 群发"亲爱的借我100块钱付个车

对于printf函数和C语言编程的初步拓展

前面说过了,任何程序都要有输出,所以printf函数是一个很重要的函数,所以有必要在学变量之前先拓展一下. 其实编程就是用计算机语言说话,一句一句地说,只要语法没错就能运行,至于能实现什么功能,就看编程者的水平了. 那么看一下下面的代码 #include<stdio.h> int main(void) { printf("hello world"); printf("hello world"); return 0; } 你觉得运行的结果在屏幕上会显示什么

Linux shell脚本编程基础之练习篇

shell脚本编程基础之练习篇. 1.编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息. #!/bin/bash if [ $# -ne 1 ] then echo "请输入一个参数" exit else echo "参数正确" newfile=$1 fi #echo `grep "^#\!" ${newfile}` if ! grep "^#\!" ${newfile} &>/

编程要自学或报班这事你都想不明白, 那必然是你智商不够

跟着这逼学python掐指一算已经有5个月了,上网搜了下,原来是很早就写过的文章--but i dot't care.金三银四,各大互联网巨头开始招实习了,最近学习有点燥-- 昨天有人在我的技术群里又讨论起了学python是自学还是报培训的话题, 事端引起是一个小白网友说自己没什么基础,想学一下python,然后有人说这东西简单,建议他自己买本书跟着学学就行了,也有人说想快速提升还是报班快, 双方就这样各执一词,一会就吵起来了,坚持 自学的说培训学校都 是骗钱的,说那些推荐报班人都是培训机构的托

JavaScript DOM编程艺术学习笔记(一)

嗯,经过了一周的时间,今天终于将<JavaScript DOM编程艺术(第2版)>这本书看完了,感觉受益匪浅,我和作者及出版社等等都不认识,无意为他们做广告,不过本书确实值得一看,也值得推荐给想了解HDOM的相关人员!首先非常感谢作者写出了这么好的一本书,谢谢!书中的内容比较多,我仅记下我认为对自己和他人有所帮助的一些内容! 嗯,首先还是让代码来说话吧! 下面是两段此书中反复强调且通用的经典代码段 1:相当的经典和实用,尤其是当需要为页面加载函数绑定多个函数的时候 /** * [addLoad

IOS开发——多线程编程

1."省电,流畅,优质应用,响应速度快,用户体验好--"也许是众多用户眼中的苹果系统. 2.在众手机商拼CPU主频,拼4核,8核的年代,苹果依然坚持双核,iphone用户体验仍然坚挺. 以上两点IOS是如何优化,在续航,流畅度和响应速度上完胜安卓,答案就是多线程&RunLoop... RunLoop是IOS事件响应与任务处理最核心机制,它贯穿IOS整个系统运作. RunLoop不像一般的线程循环等待任务,传统的线程循环等待任务会导致CPU时间被占用,虽然你设置了睡眠时间,但很多

OSChina 娱乐弹弹弹——程序猿眼中的女人

程序猿,整天跟操作系统,编程语言,各种打交道,那么程序猿眼中的女人是什么样子的呢? 有程序猿曾经用操作系统形容过各种类型的女人,有程序猿用编程语言描述各种星座的女人. 小编找到了几个版本,请看: 编程语言 NO1: 计算机语言的实质其实是为了让人类能够更好与计算机打交道,最终结果都是通过编译成二进制代码或通过解释器转译成二进制代码的形式,由计算机来 执行.而二进制就是 0 和1,假设 1 代表男人,0 代表女人,那么瞬间就可以发现世界就变成了一台大"计算机".而爱情和情爱也可以看成是

【Hybrid App】一个产品经理眼中的PhoneGap Vs. AppCan

首先在写这篇文章前,必须先申明一下,本人是技术出身,对HTML技术及手机客户端都有过编程经验,只是出于工作岗位的变动,便没有再具体代码工作,以下文章涉及的中间件的基本代码实现及前期的API使用,都是自己测试过的,虽然比较浅,但是都是真真实实的.所以请各大网友拍砖,手下留情哦~另外本文的视角如文章标题一样, 是从产品经理的角度去做比较的,不是从技术方面上去做比较. AD: 而关于原生态的开发,个人觉得HTML5中间件或者混合原生的方式肯定是不用做比较的,毕竟原生的东西还是很强大的,很多效果是HTM

能编程与会编程

几个月前因为一个事情被diao了.起因是临近上线的时候项目后端统一了消息协议(.proto),然后要我前端也支持.我研究了一天,没走通,要么依赖项太多,要么一直报错,而且需要使用的对象兼容性有问题.当时心里有些急,也有几份抵触这种方案,于是在会上说出了我的想法:能不能友好的发发json,兼容性好也不需要什么第三方解析.结果自然是被否决了,理由是大厂出品的,怎么可能不能用呢,用屁股想想就知道?你为啥遇到问题就想着退缩呢.我无语凝噎.重要是给我强调了能编程与会编程是不一样的. 开完会情绪有点低落,回