C++心得体会

2024-09-13

C++心得体会(共10篇)

1.C++心得体会 篇一

在本课程学习过程中我遇到了下面这些问题:

1、刚开始C++实践理论课的学习时,我的学习兴趣很高,总想着自己能够完全掌握PPT的知识,做成一个完美的程序。随着学习的进展,调试程序总是出现问题,最夸张的一次出现了204个ERRORS,也经常不知道怎么去在正确的期房插入程序块。而比较严格的语法规则,也让我一时难以接受,产生畏难情绪,总是怕,最后因为怕学不好而导致没有学好。

2、注重理论学习,忽视上机编程实践,造成“只能用笔在纸上编程”的奇怪现象。特别是在刚开始时,我一开始编译连接就手忙脚乱,总是会出现许多错误。有时程序则一再出现错误,使我就更不理解该如何查找错误,如何排除错误了。

3、在前期的学习中我没有抓得很紧,总觉得不是很难,希望通过突击搞定课程学习。而事实上,本课程实践要靠平时的积累,几乎不能靠临时突击,因为前面基础不够扎实,到了后面险些无法弥补。

4、我发现自己在后期的学习中有些急于求成,总想编写综合性的程序,把老师的要求一次性尽快完成。这直接导致了我编的程序一时很乱,几乎无法阅读。

后来才发现为了学好本课程,没有什么窍门,只能采用一些“笨”技巧:

认真听讲,积极思考,提高上课效率。老师上课讲述的都是课程实践的重点和难点,听好课程能够达到“事半功倍”的目的。

主动上机,多多实践,提高动手才能,实习时不能着急。通过上机实践来验证所学的理论,通过在机器上查找错误来巩固概念,通过提高上机才能来促进理论学习,开阔编程思路,提高反映效率,提高分析问题解决问题的才能,锻炼心理素质,提高心理承受才能。

这是第二次上计算机实践课程了,第一次是网页设计。虽然两次要完成的任务不同,但给人的感觉都是较迷茫的。由于我上课时没有认真听C++课程老师的讲解,学得相当糟糕,但要设计的又是一个较大的程序,便去请教老师。老师建议我们找一个模板,认真仔细地看,去理解它,看懂它,然后根据自己的实践内容适当修改,应该就没多大问题了。

老师的话给了我莫大的鼓励,但不自觉地滋生了傲慢的态度。只要有个模板不就行了嘛,小事一桩啊!但结果并非如此,在后来的实践过程中,我还是碰到了许多麻烦。

其中,对于按省份给每个省的总发表篇数进行排序这一问题,刚开始真的不会弄,我一开始以为要用一维数组来排序,可还是不太明白。于是,我询问了周边同学,才知道他们用的是Access导入C++,再利用Access的排序功能,并且调试成功了,听他们讲解后我便用了他们的方法。与同学讨论、向同学请教有时候也不失为一个好方法,一个人的智慧毕竟是不全面的,集体的力量才是强大的!同时,在运行时老是会出现一些错误,但我发现其实里面的参数并不复杂,只要跟着那个error的提示,一个一个的改下去,其实很简单的。结果事实也是如此,用了一个小时多一点,102个错误全部搞定了。错误几乎为以下三类:

1.冒号,分号等符号打错了; 2.大小写等造成的对应问题; 3.变量的不完全修改。

改完以后,在执行时我发现界面不好看,于是我又将主界面略加修改了些。看上去美观了不少。再运行功能,几乎都能顺利运行,但还是存在一些瑕疵,但是我还是不太会弄清怎么回事。于是,又去问同学,在他们的帮助下,成功解决这个问题,在此真要好好谢谢他们!

终于大功告成!欣慰在这次实践中,我不仅弥补了自己在C++课上所落下的内容,尤其是指针那块部分,虽然现在概念搞的还不是很懂,但看见程序是能够理解的。这次C++实践是给我们这一学期来所学知识的一个总复习,总的实践。它让我们把所知道的知识点运用的更好,把不知道的知识点搞得明白了。实践出真知,通过这次实践,我也系统的把课本好好的第四次回顾了下。猛然觉得,C++二级考试更有把握了。

在本门课程实践过程中,我更好的领悟了自学的重要性,并且和同学加强了交流,以便我们互相及时答疑解惑。同时我也学会了采用多种形式进行交流,不仅只是传统的面对面进行相互答疑,同时也利用网络通过百度知道、百度文库、邮件、BBS进行网上交流,也学会了绝对不要将问题积累到最后。

同时在本次实践中,我还开阔了眼界,打开了思路,阅读了几本关于C++编程的教程,从而通过理解不同作者对于C++的不同看法,来提高我对C++的理解,以方便自己在未来对C++的进一步学习。

2.C++学习心得 篇二

在计算机课程中,C++程序设计是计算机专业的一门必修基础课,该语言以其高效而又实用的特性:既可以进行过程化程序设计,又可进行面向对象的程序设计,是进行软件开发的直接工具。

学习语言是需要技巧的,无论是哪种语言,里面都是有规律的。对于计算机语言来说,我认为应该先理解,然后上机去实现它,实践是检验真理的唯一标准。

C++语言课程是一门实践性很强的课程,一定要动手多写设计、编写程序才能有所进步。在实践教学中必须做到循序渐进,对所学的每一部分内容都应该要求学生完成一定数量的实验内容。每部分的上机习题必须精心挑选,既要有基本的、较简单的题目,又要有一些具有挑战性的新颖有趣的题目。自己编写的程序一定要到机器上去实现,通过调试程序来修订语法错误,排除逻辑错误,进而提高编程能力,通过做一定量的习题,可以积累一定的经验,同时对程序设计的精髓会有所领悟,从而重视上机实验。

实践重要,老师的教学方法同样重要。要强调学以致用,展示学生能够理解而且又容易提起兴趣的用C++语言设计的软件以及往届学生的设计成果,给学生布置了几个专题,比如:设计班级成绩管理系统、简易的图书管理系统、简易的通讯录管理系统、小游戏等让学生利用课余时间去思考、收集资料,以教师为主导,以任务为主线,以学生为主体,过一段时间在课堂上组织学生发言和讨论一次,看看大家对这些问题的思考程度,提提建议,鼓励加引导,最后到完成。这种教学法不仅可以让学生获得许多课外知识,同时也促进教学内容的改革,而且也有利于充分挖掘学生的学习潜力。

3.C++心得体会 篇三

心得体会

学院: 班级: 学号:

姓名:

课程设计心得体会

时间过的真快,一晃眼的功夫,C++实习就要结束了,虽然只是短短的10天,但带给我的却很多。

首先,我先简单回顾一下自己在这一段时间的经历。实习是从31号开始的,经过短短的一上午的辅导,我就开始了自己的任务,每个人必做的第一题最优直线平差、自己选的第六题秩亏网平差和一个临时加的水准路线与三角高程相对定权问题的处理。说实话,虽说自己利用空闲的时间看了一本C++的教程,对书本上的知识有所补充,对一些知识点相对理解加深了一些,但是如果真正上机编程的话,还是有点小心虚。俗话说:熟能生巧;在老师的激励下,我对自己的本次实习充满信心与期待。

我的实习的真正开始算是第二天吧,也就是元旦放假第一天,因为天气比较冷所以就呆在宿舍在自己的电脑上先小试身手,不管做什么东西,都要有一个好的基础,MAT类和adj类算是测绘程序设计的一个非常重要的辅助工具吧,几乎每个程序都要涉及,于是我就用了一天的时间将“MAT.h”头文件读了一遍,尽管求逆inverse()函数和求矩阵的秩R()函数没有看懂,但其具体在什么地方用,和其他的一些程序算是有一定的掌握,然后就分析题目,慢慢做吧。

万事开头难,古人真是睿智。最优直线的问题,题目看了好几遍,相关的一些老师的程序也读了几次,感觉还是没法下手,也许感觉这东西不靠谱,它有时候会挡住你前进的路,而你只能靠着这种感觉原地踏步,重要的是摒弃它,踏出你的第一步。算了,硬着头皮踏出犹豫的第一步,先建个Myline的类,然后把能想到的数据成员与成员函数加进去,然后在做定义。就这样磕磕绊绊地、边写边参考老师的程序,我的程序算是有了几个大块了,file_in_Myline(char *),file_out_Myline(char *),Myline_adj(),为了实现文件能够成功的调用,我又尝试着加入了Creat_Myline_file(char *)函数,通过屏幕上提示创建自己的文件,然后有直接调用file_in_Myline(char *)函数直接应用,为了尽量减少在main()函数中的处理,最后有加入了联系file_in_Myline(char *)和file_out_Myline(char *)的file_Myline(char *,char*)函数,然后其他数据成员根据需要往类中添加。就这些东西,我做了一天,还没有去调试,没有建立其函数之间的传递,效率真够低的,然后2号晚上开始调试,好多错误,看的懂的,看不懂的,我极力调试着,但我的脑子也越来越混乱,烦躁开始侵蚀我的理智。。算了,休息会吧,再跟其他同学交流一下,宿舍小憩了一会,然后请来了编程不错的一个同学,他因为对这方面感兴趣,就提前好几天开始编程了,他给我指导了一些问题,期间,我们也交流了好多关于课题任务的一些知识点、注意点,晚上,11点左右,我的最优直线算是孕育而生了,程序的运行结果跟预期结果一样,真的,在结果显示在屏幕上的那一刻,我真的感觉好友成就感,今天就到这吧,有些累了,虽然程序在整体上看起来有点混乱、有的粗糙,但我可以安逸的睡了,明天再做整体修正吧,总体来说,这个开头在有心人面前算是开的有点崎岖但还算顺利。

然后第二天修改了下我的最优直线,再考虑了下我的第六题,那天晚上也算是曲折的做了出来,第十题老师说是很简单,而且就光当时的讲解讲了好几遍,所以有目的的去看定权的那一部分程序,没花多长时间就把它搞定了,元旦三天时间,别人玩的时候,我做了我的程序,有好多同学的程序还没有开始呢,哈哈,我感觉好幸福!

4号算是实习的第二天,但我的任务可以接近尾声了,但前提是我这样想的话。因为我知道班里的一些同学也同样做完了自己的任务,都开始涉及其他的课题,大家都极力的充实自己,我怎么可能落下呢?所以我不会就此停下,我要好好利用本次实习,让它充实而有意义。

在接下来的几天里,我积极的接触其他课题,在自己的努力和老师的帮助下,效果很理想!

本次实习,我做了7个课题,第九个平面网最小二乘法的实现,因为涉及的程序太多,一时半会做不完,所有以后有时间再去考虑它吧,总体来说还是达到了自己的期望,。从某种程度上来说我是超额完成自己的任务,但是我知道,这个结果除了自己的努力外还有其他几方面非常重要的原因,而这几方面也让我成长了不少。

实践出真知,实习前,我的C++知识只是停留在理论水平,而且就算理论水平,也存在很多漏洞。有时,在做课题的时候,理论的漏洞冒了出来,我就只能在看着课本慢慢的再学习一遍,像做导线程序有涉及到数字测图的知识,还有好多数据处理都涉及到平差原理的知识,因为当时有些东西就没有搞懂,所以现在就又翻出课本,看着课本编程,也算是将旧的东西复习了一遍。同时,有的理论在实习操作过程中印象更加深刻。有趣的是,做完导线程序,用课本上的数据演算了一遍,结果发现课本上有一个数据是错误的(可能是吧),其他有做导线的同学也有相同的反应,总之,感觉挺好,不错!

成功=勤奋+合作。我暂且将我的实习成果用成功来代替,虽然离成功差的还很远。在实习接近尾声的时候,有的同学跟我聊得时候,说我怎么交这次实习的成果,我说做了的课题都交啊。同学有些羡慕的恭喜我,我挺愉快的,但我也知道,我付出了,回报跟付出是成正比的,我从31号起就开始了自己的实习,我也放弃了好多休息的时间,我笨拙的读着老师给的相关的程序,发现有什么不懂得,先是一个人自主的思考,实在解决不了的就和其他同学讨论,有时别的同学会很清晰的给我说明一些课题的思路,但大多数,其他同学也不懂、或者也在这方面存在疑问,于是,大家发表各自的看法、思路,然后就讨论了起来,最后,在大家的共同努力之下,问题的答案逐渐浮出水面,大家为了庆祝一下,有时还去外面吃一顿。交流与合作在实习过程中给我很大的帮助,我得到了很多,每次看到解决一道问题后大家的愉悦,我想大家应该与我一样收获很大吧。说真的,我挺喜欢这种讨论的氛围,它也让实习过程变得趣味横生,不再只是呆滞的盯着屏幕写程序。

我是班长,我有义务去帮助其他同学,而实习给了我一次很好的机会,也让我成长了好多。在这几天的上机过程中,有同学问我问题,我积极的对待每一个问题,我会的,耐心的为他讲解,每一次讲解,也是我的知识巩固的一个过程,所以我也乐此不疲,每次给别的同学讲完后,我挺有成就感的,这种成就感不会让我沾沾自喜,而会成为我不断向上的动力;毕竟我也算是新手,有一些问题自己也是无能为力,我们或是讨论,或是问老师,老师耐心讲解让我们甚是感动,有时候被老师那种责任心所折服,大家都说有这样的老师真好!好的,我也要向老师学习,对同学负责,做好我的角色,真正做到为了同学的利益而牺牲自己的时间。

本次实习的缺陷,对我来说就是,所有程序的原始数据都来自老师给的数据或者是测量平差和数字测图书上的例题数据,跟其他同学会有所重复,但所有的程序都是自己独立完成。

这次实习总体来说,每天我的过的挺累,但累是值得的,这个值得不仅仅是课题成果上,更重要的让我成长好多,也许这就是我在这短短的十天左右的时间里最好的回报吧。

4.C++实验教案 篇四

一、实验目的

1)了解和使用VC++集成开发环境;

2)熟悉VC++环境的基本命令和功能键; 3)学习完整的C++程序开发过程; 4)理解简单的C++程序结构;

5)学习C++程序基本的输入输出操作。

二、实验内容及要求

1)控制台应用程序:在终端上输出“Hello”(printf); 2)Windows应用程序:在窗口上输出“Hello”(pDC->TextOut(50,50,“Hello”))。

三、实验重点

1)C、C++、VC++三者之间的关系; 2)项目与源文件的区别;

3)控制台应用程序与Windows应用程序的区别。

四、实验步骤

1)进入VC+;2)编写程序;3)调试程序;4)分析结果。

五、实验环境

Windows 2000、VC++ 6.0

六、思考题

在一个项目中可有几个main()函数?如何调试多个源程序?

七、实验报告要求

1)实验名称、日期;2)姓名、班级、学号;3)源代码需有注释;4)实验结果;5)心得体会。

八、参考书籍 《C++面向对象程序设计习题解析与上机指导》,陈维兴等,清华大学出版社

实验三 函数

一、实验目的

学习C++中内置函数、默认参数的定义与调用方法; 学习C++中函数重载的使用方法。

二、实验内容及要求

编写一个sum内联函数,能返回二个整数的和,其二个参数都为默认参数,然后由主函数进行调用;

编写二个add函数,分别可对int与char类型进行加法操作,其中针对char类型的加法操作可视为连接操作,如add(‘x’,’y’)的返回值为”xy”。

三、实验重点

函数的重载;

默认参数的定义次序。

四、实验步骤

1)进入VC+;2)编写程序;3)调试程序;4)分析结果。

五、实验环境

Windows 2000、VC++ 6.0

六、思考题

函数重载调用时的判断依据是什么?

七、实验报告要求

1)实验名称、日期;2)姓名、班级、学号;3)源代码需有注释;4)实验结果;5)心得体会。

八、参考书籍

实验五 类与对象

一、实验目的

1)学习类与对象的定义和声明; 2)掌握类与对象的使用方法;

3)学习数据成员与成员函数的访问方式。

二、实验内容及要求

1)编程实现一个student类,管理一个学生的基本信息,包括学生姓名、学号、语文成绩、数学成绩、英语成绩、平均成绩等数据成员,然后在main函数中,从键盘输入得到一个学生的基本信息,最后输出所有数据成员值到屏幕上;

2)要求使用成员函数的方式实现对姓名、学号的读写操作、语数英三科成绩的写操作、平均成绩的读操作。

三、实验重点

1)类与实例的关系;

四、实验步骤

1)进入VC+;2)编写程序;3)调试程序;4)分析结果。

五、实验环境

Windows 2000、VC++ 6.0

六、思考题

为什么要采用成员函数对数据成员进行读写操作,而不是直接操作?

七、实验报告要求

1)实验名称、日期;2)姓名、班级、学号;3)源代码需有注释;4)实验结果;5)心得体会。

八、参考书籍

《C++面向对象程序设计习题解析与上机指导》,陈维兴等,清华大学出版社

实验七 对象数组与对象指针

一、实验目的

1)掌握数组与指针的定义与使用方法; 2)理解数组与指针的存储分配与表示; 3)学习向函数传递数组的方法;

4)学习用指针和引用向函数传递参数。

二、实验内容及要求

1)在实验五的student类基础上,实现一个Sum函数,可将一个student类数组作为参数传送到函数中,计算出语、数、英的总分,并输出在屏幕上;

2)要求Sum函数中的参数传送分别用普通、指针和引用三种方式实现。

三、实验重点

1)直接传送、引用传送、指针传送三种方式的区别,分别对参数值的影响;

四、实验步骤

1)进入VC+;2)编写程序;3)调试程序;4)分析结果。

五、实验环境

Windows 2000、VC++ 6.0

六、思考题

对象数组和对象指针与普通对象和普通指针的关系。

七、实验报告要求

1)实验名称、日期;2)姓名、班级、学号;3)源代码需有注释;4)实验结果;5)心得体会。

八、参考书籍 《C++面向对象程序设计习题解析与上机指导》,陈维兴等,清华大学出版社

《C++面向对象程序设计习题解析与上机指导》,陈维兴等,清华大学出版社

实验九 派生类与继承

一、实验目的

1)学习类的的继承,能够定义和使用类的继承关系; 2)学习派生类的声明与定义方法; 3)熟悉公有派生和私有派生的访问特性。

二、实验内容及要求

在实验五的student类基础上,定义小学生、中学生、大学生三个继承类; 小学生类增加“年级”数据成员及读写函数,实现全部信息的屏幕输出; 中学生类增加“文理科”数据成员及读写函数,实现全部信息的屏幕输出; 大学生类增加“专业”数据成员及读写函数,实现全部信息的屏幕输出。

三、实验重点

Private和public派生方式对基类数据成员的可见性。

四、实验步骤

1)进入VC+;2)编写程序;3)调试程序;4)分析结果。

五、实验环境

Windows 2000、VC++ 6.0

六、思考题

为什么要派生类?类继承的好处是什么? 派生类的构造/析构函数执行次序。

七、实验报告要求

1)实验名称、日期;2)姓名、班级、学号;3)源代码需有注释;4)实验结果;5)心得体会。

八、参考书籍

实验十一 函数和运算符重载

一、实验目的

1)掌握运算符重载的基本方法。

二、实验内容及要求

在实验五student类的基础上重载“= =”运算符,判断二个student对象是否相等; 在实验五student类的基础上重载“>”运算符,判断二个student对象的成绩关系。

三、实验重点

1)运算符重载的语法规则。

四、实验步骤

2)进入VC+;2)编写程序;3)调试程序;4)分析结果。

五、实验环境

Windows 2000、VC++ 6.0

六、思考题

函数与运算符的关系。

七、实验报告要求

1)实验名称、日期;2)姓名、班级、学号;3)源代码需有注释;4)实验结果;5)心得体会。

八、参考书籍

《C++面向对象程序设计习题解析与上机指导》,陈维兴等,清华大学出版社

实验十三 函数模板

一、实验目的

1)理解模板的作用;

2)学习函数模板及其声明和生成方法; 3)学习函数模板的异常情形处理方法。

二、实验内容及要求

1)定义函数模板实现对int型数组和double型数组的累加。

三、实验重点

1)函数模板的语法规则。

四、实验步骤

1)进入VC+;2)编写程序;3)调试程序;4)分析结果。

五、实验环境

Windows 2000、VC++ 6.0

六、思考题

函数模板的应用场景是什么?

七、实验报告要求

1)实验名称、日期;2)姓名、班级、学号;3)源代码需有注释;4)实验结果;5)心得体会。

八、参考书籍

《C++面向对象程序设计习题解析与上机指导》,陈维兴等,清华大学出版社

实验十五 自定义类型I/O

一、实验目的

1)熟悉流及流类库的作用;

2)掌握流类库中常用的类及其成员函数的使用方法。

二、实验内容及要求

1)在实验五student类的基础上,重载“>>”和“<<”运算符。

三、实验重点

1)自定义类型的I/O运算符重载。

四、实验步骤

1)进入VC+;2)编写程序;3)调试程序;4)分析结果。

五、实验环境

Windows 2000、VC++ 6.0

六、思考题

在自定义类型上重载“>>”和“<<”运算符的用途。

七、实验报告要求

1)实验名称、日期;2)姓名、班级、学号;3)源代码需有注释;4)实验结果;5)心得体会。

5.C++ sort 篇五

#include

#include

#include

#include

#include

using namespace std;

template

void _qsort (InputIterator1 first, InputIterator1 last,UnaryPredicate pred)

{

if(first!=last){

auto mid=partition(first,last,bind2nd(pred,*first));//以第一号元素作为划分元素

_qsort(first,mid,pred);

if(first!=mid)_qsort(mid,last,pred);

else _qsort(mid+1,last,pred);

}

}

int main{

array t1 = {3,5,7,11,13,17,19,23};

array t2 = {19,23,3,5,7,11,13,17};

_qsort(t2.begin(),t2.end(),less());

for_each(t2.begin(),t2.end(),[](int i){cout<<

6.c++课程设计总结 篇六

经过一个学期对《C++程序设计》的学习,我学习到了基本的理论知识,了解到了C++语言程序设计的思想,这些知识都为我的课程实践和进一步的学习打下了坚实的基础。在为期近两周的C++课程设计中,我体会颇多,学到了很多东西。我加强了对C++程序设计这门课程的认识,并且复习了自己以前学习到的知识。这些都使得我对计算机语言的学习有了更深入的认识!总之,通过这次课程设计,我收获颇丰,相信会为自己以后的学习和工作带来很大的好处。像职工信息表这样的程序设计,经历了平时在课堂和考试中不会出现的问题和考验。而这些问题,这并不是我们平时只靠课本,就可以轻易解决的。所以,锻炼了我们挑战难题,学会用已掌握的知识去解决具体问题的能力,进一步培养了独立思考问题和解决问题的能力。特别是学会了在Visual C++中如何调试程序的方法。当然,老师的指导和同学的帮助也是不可忽视的,他们给了我许多提示和帮助,教会了我编译复杂程序的方法。

在老师和同学的帮助下,通过自己的努力,终于完成了这次职工信息表的简单课程设计。我经过这段时间的编程,对其中的艰辛,我是深有体会。从刚开始的选择程序、理解程序到后来的调试程序以及改进程序这个过程中,我遇到了各种各样的困难和挫折。但是我坚定信念,对自己充满了信心,想尽一切办法克服重重困难。

通过课程设计的训练,我进一步学习和掌握了对程序的设计和编写,从中体会到了面向对象程序设计的方便和巧妙。懂得了在进行编写一个程序之前,要有明确的目标和整体的设计思想。另外某些具体的细节内容也是相当的重要。这些宝贵的编程思想和从中摸索到的经验都是在编程的过程中获得的宝贵财富。这些经验对我以后的编程会有很大的帮助的,我要好好利用。

虽然这次课程设计是在参考程序的基础之上进行的,但是我觉得对自己是一个挑战和锻炼。我很欣慰自己能在程序中加入自己的想法和有关程序内容,也就是对它的程序改进了一番改进,并有创新。但是我感觉自己的创新还不够典型,总之还不是很满意。另外由于时间的紧迫和对知识的了解不够广泛,造成了系统中还存在许多不足,功能上还不够完善。以后我会继续努力,大胆创新,争取能编写出透射着自己思想的程序。这次课程设计让我充分认识到了自己的不足,认识到了动手能力的重要性。我会在以后的学习中更加努力锻炼自己,提高自己,让自己写出更好更完善的程序,为以后的编程打好基础!

总而言之,这次C++程序设计实践让我收获很大。

计算机科学与技术13-2班

7.C++函数指针详解 篇七

至于指针的详细学习,推荐这篇博文C++指针详解

与数据一样,函数也有地址,函数的地址就是内存中存放函数语言代码的起始地址。函数指针就是指向这个地址。函数指针所指向的类型,就是函数本身。我们知道,指针所指向类型代表了指针所指向的内存区域的大小。所以函数指针所指向的类型,就是函数在内存中所占据内存的大小。知道了函数的起始地址和大小,所以函数指针可以很轻易的代替函数完成函数调用。

一、最简单的函数指针

变量都包括声明和赋值,指针不例外,函数指针也不例外。我们来看一个简单的函数:

void add(int a, int b){

cout << a + b << endl;

}

一个简单的加法计算并输出到命令行的函数。

那么如何通过函数指针来调用它呢?

1、声明:

void (*p1)(int a, int b);

函数指针的声明很简单,基本就是通过一个指针把函数名替换。指针p1的类型为void (*) (int a,int b),表明指针是一个指向某个函数的指针,指针指向的类型为void () (int a,int b)

2、赋值:

p1 = add;

3、也可以直接定义:

void (*p1)(int a, int b) = add;

注意,函数void add(int a,int b)的函数名add就是函数的地址。将地址add赋值给指针p1,那么就可以通过函数指针p1直接调用函数了。

4、调用:

(*p1)(1, 2);

p1(1, 2);

注意!出于历史原因以上2种方式都是可以调用函数的。

二、包含多个函数指针的数组

有时候有这种情况,有一个数组,数组中的每个元素都是一个函数指针,该怎么定义这个数组呢?

1、解释*p[n]和(*p)[n]

我们知道,[]运算符的优先级要高于*,所以,p[3]表示含有3个元素的数组,而*p[3] 前面的 “ * ” 指明了数组中元素的类型,即*p[3]表示一个指向3个指针的数组,

p[3]表示含有3个元素的数组,那么(*p)[3]就是用 *p 替换了 p,很容易想到,(*p)[3] 表示指向一个包含3个元素的数组的指针。

2、声明:

void (*p2[2])(int a, int b);

数组名为p2,数组大小为2,数组中元素类型为void (*)(int a, int b),表明元素是一个指向某个函数的指针,指针指向的类型为void () (int a,int b)。

3、赋值:

p2[1] = add;

理解上跟上面是一样的。

4、调用:

p2[1](2,3);

(*p2[1])(3,4);

同样是2种方式都可以。

三、指向“包含多个函数指针的数组“的指针

这个标题好像有点拗口。简而言之,这个指针指向上文中的 “包含多个函数指针的数组” 。其实很简单,说白了,就是把上文中的p2用一个指针来代替。

1、声明:

void (*(*p3)[2])(int a, int b);

可以看到,无非就是把p2用*p3代替。

2、赋值,注意,既然是指针,使用前必须初始化:

p3 = &p2;

(*p3)[1] = add;

注意!既然实质上就是把p2用*p3代替,c++11可以很简单的这样直接定义:auto p3 = &p2; 代替了void (*(*p3)[2])(int a, int b)= &p2;

3、调用:

(*p3)[1](1, 2);

8.C++书籍阅读顺序 篇八

当读者有一定c/c++基础

推荐的阅读顺序:

level 1

从>开始,短小精悍,可以对c++能进一步了解其特性

以>作字典和课外读物,因为太厚不可能一口气看完

level 2

然后从>开始转职,这是圣经,请遵守10诫,要经常看,没事就拿来翻翻

接着是>,个人认为Herb Sutter主席大人的语言表达能力不及Scott Meyers总是在教育第一线的好顺下来就是>和>,请熟读并牢记各条款

当你读到这里,应该会有一股升级的冲动了

level 3

>看过后如一缕清风扫去一直以来你对语言的疑惑,你终于能明白compiler到底都背着你做了些什么了,这本书要细细回味,比较难啃,最好反复看几遍,加深印象

看完上一本之后,这本>会重演一次当年C++他爹在设计整个语言过程中的历程level 4

>是stl的字典,要什么都可以查得到

学c++不能不学stl,那么首先是>,它和圣经一样是你日常行为的规范

>让你从oo向gp转变

光用不行,我们还有必要了解stl的工作原理,那么>会解决你所有的困惑

level 5

对于c++无非是oo和gp,想进一步提升oo,>是一本主席这么多年的经验之谈,是很长esp的一位stl高手是不能不去了解template的,>是一本百科全书,足够你看完后对于gp游刃有余

>是太过聪明的人写给明眼人看的

好书有很多,不能一一列举

以上我的读书经历,供各位参考。接下来的无非就是打怪练级,多听多写多看;boost、stl、loki这些都是利器,斩妖除魔,奉劝各位别再土法练钢了。

at last,无他,唯手熟尔。

忘了一本《thinking in C++》

也是经典系列之一

>这本圣经的作者Scott Meyesr在给>序言的`时候高度的赞赏了Andrei同志的工作:C++社群对template的理解即将经历一次巨大的变化,我对它所说的任何事情,也许很快就会被认为是陈旧的、肤浅的、甚至是完全错的。

就我所知,template的世界还在变化,速度之快就像我1995年回避写它的时候一样。从发展的速度来看,我可能永远不会写有关template的技术书籍。幸运的是一些人比我勇敢,Andrei就是这样一位先锋。我想你会从此书得到很多收获。我自己就得到了很多――Scott Meyers September。

并且,Scott Meyers 在最近的Top5系列文章中,评价C++历史里面最重要5本书中、把Modern C++ Design列入其中,另外四本是它自己的effective c++、以及C++ Programming Language、甚至包括《设计模式》和《C++标准文档》。 显然,Scott Meyers已经作为一个顶尖大师的角度承认了>的价值。

并且调侃地说,可以把是否使用其中模板方法定义为,现代C++使用者和非现代C++使用者,并且检讨了自己在早期版本Effective对模板的忽视,最后重申在新版本Effective第七章节加入大量对模板程序设计的段落,作为对这次失误的补偿。

并且,在这里要明确的是>并不是一本泛型编成的书,也不是一本模板手册。其中提出了基于策略的设计方法,有计划和目的的使用了模板、面向对象和设计模式。虽然Andrei本人对模板的研究世界无人能敌,但对其他领域的作为也令人赞叹。

任何做游戏的人都不能忽视OpenAL把,你在开发者的名单里能看到Loki的名字:)

最近很忙,无时间写文章,小奉献一下书籍下载地址。虽然经过验证,但是不感肯定各位一定能下:

中文

www.itepub.net/html/ebookcn//0523/40146.html

英文

dl.njfiw.gov.cn/books/C/Essential%20C++.chm

英文

www.vipbook.net/soft/2114.htm

>英文

soft.studa.com/downinfo/19350.html

英文

soft.studa.com/downinfo/19380.html

英文

soft.studa.com/downinfo/19377.html

dl.njfiw.gov.cn/books/C/Inside%20the%20C++%20Object%20Model.chm

ebook.manboo.info/2006/11/19/the-design-and-evolution-of-c.html

dl.njfiw.gov.cn/books/C/Effective%20STL.pdf

dl.njfiw.gov.cn/books/C/The%20C++%20Standard%20Library.chm

dl.njfiw.gov.cn/books/C/Modern%20C++%20Design.chm

cpp.ga-la.com/html/8/10/0510/71.htm

www.itepub.net/html/ebookcn/2006/0429/7320.html

9.C和C++总结 篇九

C++中分为这几个存储区:栈,堆(new创建,delete结束或者操作系统自动回收),全局区(静态区),自由存储区-(malloc创建,free结束),常量存储区,2看到一本书上写了进程通信方式有如下:

1)信号 ——软中断,2)管道

3)文件和记录锁定

4)消息队列

5)信号量

6)共享内存

Unix的启动顺序排序。

第一步:通过/boot/vm进行启动 linux内核

第二步:init /etc/inittab

第三步:启动相应的脚本,并且打开终端

rc.sysinit

rc.d(里面的脚本)

rc.local

第四步:启动login登录界面 login

第五步:在用户登录的时候执行sh脚本的顺序:每次登录的时候都会完全执行的/etc/profile.d/file

/etc/profile

/etc/bashrc

/root/.bashrc

/root/.bash_profile

Linux中查看目录大小的命令:du –sh filename

修改文件属性的命令是:chmod 777 file-R

切换为其他用户身份的命令是:du

第一次:第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

第二次:第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包

ACK(ack=k+1),此包发送完毕,客户端和服务器进入established状态,完成三次握手

指令用途

#空指令,无任何效果

#include包含一个源代码文件

#define定义宏

#undef取消已定义的宏

#if如果给定条件为真,则编译下面代码

#ifdef如果宏已经定义,则编译下面代码

#ifndef如果宏没有定义,则编译下面代码

#elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码

#endif结束一个#if……#else条件编译块

#error停止编译并显示错误信息

static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;

static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;

10.c++实习 篇十

实验 循环的使用

(1)已知abc+cba=1333,其中a,b,c均为一位十进制数,满足条件的a,b,c所有组合。

(2)x+y+z=1003x+2y+0.5z=100百元买百鸡

(3)10——2

10——8

10——16 进制的转换

实验C++教材p213例6.4动态多态性的应用 实验P255 例7.16文件的访问。

实验 顺序表类SqList// 选做之一

Class SqList

{ public:

//构造函数

//析构函数

//ListInsert(I,e)

//GetElem()

//listlength()表长函数,注意:成员函数名和变量名不能相同//ListTraverse();

//ListDelete(i)

//LocateElem(e)返回元素e在表中的位置

//重载+可以实现L3=L1+L2;

//重载<< 可以利用Cout<

Private:

Int *elem;

IntListlength

IntListSize;

}

上一篇:学校暑假的工作总结下一篇:依恋散文欣赏