30天掌握C++精髓.pdf

所需积分/C币:10 2013-08-01 13:39:40 3.86MB PDF
1
收藏 收藏
举报

30天掌握C++精髓.pdf 对C++技术的总结性学习巩固资料
PLC WORLD Generated by Foxit PDF Creator Foxit Software http:/www.foxitsoftware.comForevaluationonly 2.《挑战30天C++入门极限》引言 作为一个长篇的C+入门教程,无论如何也应该有这么个引言,可是文笔并不好的我,想了很久也不知道该如何写。。 仔细想想,与其把这篇短文当作教程的引言,其实它更应该是一篇引导初学者步入C十十殿堂的策论。 几年并不算很长的编程经验,使我感触颇深,痛苫遂茫,以及成功后的喜悦一直交替着伴随我,爱好编程的我,在学习期间也 被很多很多学习的困难疑惑所阻挡,甚至不只一次的想放弃 让我初次领略到作为一个程序员应该有快乐与喜悦的是 VISUA. BAS IO语言,这些牛为了作,也学习过很多其它的语言,包 括时下正在流行的JAVA与C等等,在这里不得不说的是,作为一个程序员,一个能够适应当前中国工作环境的程序员,你要学的 还远不止这些,包括数据系统,等等,等等。 很早就听人说过,如果你是一个程序员,如果你没有学过C语言,那么就不能算做是一个真正的程序员,这句话也许有点夸张, 不过当你学习过它以后就不得不承认这句话真的有那么几分道 理,C艹语言是由C语言发展而来的一种新的支持面向对象的语言,从一开始接胆它,它的魅力就深深的吸引着我,起初我和很多 想要学习它的人一样,觉得它很难懂,当时为了看懂,想明勹一些现在看来真的很容易的例子时,真的有点让我抓狂 作为一种灵活性高,体系庞大,支持面向对象思想的高缴语言,C+的确比其它语言更难学习,很多正在学丬它的在校大学生, 以及很多正在从事编程工作想自学它的程序员,对于它的入门及各必要知识点掌握苦恼不已 其实学习C+和学习其它知识一样,并没有很多特别的要求,需要的只是那么一点点耐心,那么一点点忍耐力,以及遇到困难 挫折不轻易屈服的精神,更重要的一点是你必须有一本好的,适合你的入门书籍指引你逐渐进步,面对书店里种类繁多,出名的不 出名的℃艹教材,不光是初学者就连我也同样觉得眼花缭乱无从选择,很多优秀的国外C艹教材有着过于系统的知识面以及跳跃式 阅读的方法,这对初学者,尤其是从小就习惯从头到结尾阅读书籍的屮国人来说是不合适的,国内的教材多以大学教材为主,这些 书中的例子多以大学数学,或者工程数学举例,这样一来就把很多数学并不很好的读者拒之门外了。 在行内,很多人是不愿意和你分享学习经验的,一来工作任务繁重,再着很多人觉得这样会给自己带来更多的竞争对手。这些 我都亲身经历过,正是因为此类的种种感受,于是我由内心而发,真心实意的愿意帮助那些正在学习C++话言想入门的朋友们。 从一开始学习计算机语言,几乎所有的人都会问到,我该如何入门,入门后又该如何继续持久的进步下去呢?首先我要说的是, 计算杋语言的入门,无沦是C/C十十还是JAⅥA、C,他们都和高笭数学没有太多联系,讣算机语言是一种逻辑的文字描述,休现 逻辑的是思想,当你通过理解一些计算杋语言所描述的,并不算难的逻辑问题后,你朊已经掌握了话言本身,并且寘正入门了。 当然,计算杋语言毕竞是和数学有密切联系的产物,在计算机艹界里他们筱此依赖谁也离不开谁,当你正确理解编稈思想,掌 握必要知识点,入门之后,如朱想做一个优秀的程序员而不是单单做一个程序的"拼装工",你就不得不对数学知识进行进一步的系 统学习。此长篇C十入门教程正是指引读者迈入C++殿堂的初级读本,目的只是帮助读者快速入门,掌握必要的知识点,为了让教 程通佟易懂,容易理解,适合自学,笔者为此下了不少I夫,同时也和我的一些朋友讨论过,意见中值得注意的是,一个作者如果 没有教学,就只知道摸索一种适合自己的学习方法,对于语言学习的难点重点,关键是如何将复杂的问题用朴素的"俗"文化来写 PLC WORLD Generated by Foxit PDF Creator Foxit Software http:/www.foxitsoftware.comForevaluationonly 针对这些问题笔者笔者是认真反思过的,所以全书完全站在初学读者的思考的角度来写,教程中完全不包括任何难以理解的高等数 学、工程数学问题,及C艹标准庠知识,着重对各入门的难点重点详细讲解分析,相信认真学习并读过亡的人绝对不会觉得是浪费 时间。 对于C++学习,创建一条由入门到深入最后到精通的可持续学习并不段发展的道路概括起来可以是以下顺序。 1.学习一些基本的C语言知识,例如:什么是变量,什么是函数 2.C++语言入门,基本知识点的掌握 3.高等数学及工程数学的系统学习,结合实际了解并使用C++的各类常用的标准厍。此外平时可以找一些广受好评的具备一定 深度的C艹教材看一下,进一步理解C艹的高级编程精髓,以及看一些计算杋原理和数据结构方面的书鱔。 4.学习包括在各类操作系统下绢程的必要知识,以 Windows操作系统为例,需要学习掌握 WINAPI,以及高效开发的MFC VCL等在内的其它知识。 千里之行始于足下,路虽然很长,困难也会很多,不过你一旦入门,一定会觉得面前豁然开朗,会不段的激励着你学习下去的 读者们如果在学习过程中有不懂的问题可以来我的站点提问,我会尽力解答的。站点址http://www.cndev-lab.com 写到这里笔者也呼吁更多的程序高手们,敲起你的键盘,把你的优秀的经验和思想奉献出来,帮助更多需要的人,毕竟思想是 需要的是沟通的,知识是需要的是共享,快乐需要的是传递的 最后在这里要感谢的是我的家人,我的父亲:管苗青、母亲:汪秋霞。多年米父亲母亲给我的帮助很大,一直耐心鼓励着我学 习,母亲对我学习上的帮助己及她优秀的自学经验思想是我一生中最重娈的财富。 作者:管宁 零零五年三月十七日凌晨三点半 PLC WORLD Generated by Foxit PDF Creator Foxit Software http:/www.foxitsoftware.comForevaluationonly 3.在cc++利用数组名作为函数参数传递排序和用指针进行 排序的例子。 以下两个例子要非常注意,函数传递的不是数组中数组元素的真实值而是数组在内存中的实际地址 共 includc< stdio.h> void main( void) void reversal static int a[10]={0,1,2,3,4,5,6,7,8,9};/建立一个数组并初始化* Int for(1=0;1<10:1++) printf("ood", a) printf("n") reversal(a,10);/调用自定义涵数进行反向显示排序,并把数组a的起始地址传送给形式参数x* for(i=0:<10;i++) printf("%d", a) printf("n ); void reversal(x n int xL,n;/*定义形式参数*/ intm=(n-1)/2;/计算10个数需要循环几次,因为是两两调換第一个数组是x[故应该是int(9/2)* Int temp, 1,J;/建立零时变量temp用于每次交换处理时零时存储x的值* for(i=0;1<=mi-+) j=n-1i;反向计算出被调换的数组下标,例如x]对应的x[n-1-i]就是x[9]*/ temp=X; x=xL; 4 PLC WORLD Generated by Foxit PDF Creator Foxit Software http:/www.foxitsoftware.comForevaluationonly 次题需要注意的是这里山于a[1]和x[0是共同享内存地址位的所以进行交换后a0的实际值也就发生了改变布 #include <stdio.h> void main(void) void reversal static int a[10]-{0.1,2,3,4,5,6,,8,9};/*建立一个数组并初始化* int 1: for(1=0:1<10;1++) printf("%od", a) printf("n) reversal(a,10);/*调用自定义涵数进行反向显示排序,并把数组a的起始地址传送给形式参数x*/ for(i=0;1<10;i++) printf("%d", a) printf("n") void reversal(x, n) int x,n;/*定义x为指针变量* Int temp,*p,+,j;这里需要注意的是temp用与交换的时候临时存储数据的* i=x;/*利用指针变量i存储数组a的起始地址* p=x+(n-1y2),(*计算最后一次循环的时候数组a的地址* j-x+n-1;/*计算数组a也就是a[9]的结束地址好用于交换* for(i<-p;i+-j-))利用循环和指针进行数组元素值的交換* temp=*;/*用temp临时存储*i也就是循环中a实际的值* PLC WORLD Generated by Foxit PDF Creator Foxit Software http:/www.foxitsoftware.comForevaluationonly *此例同样注意到利用指针进行数组的操作同样改变了实际数组各元素的值* 4.c/c++中指针学习的两个绝好例子 对于众多人提出的cc++中指针难学的问题做个总结 指针学习不好关键是概念不淸造成的,说的筍单点就是书没有认真看,指针的学习犹如人在学习饶口令不多看多学多练是不行的 下面是两个很经典的例子,很多书上都有,对于学习的重点在于理解*x和x的理解,他们并不相同,*x所表小的其实就是变量a木身,x 表示的是变量a在内存中的地址,如果想明白可以输出观察cout<x*x"x;,当定义了in*x后对x-&a的理解的间题。仔细阅读和联系下 面的两个例子我想指针问题就不足难点了! include <stdio. h> main( int a b;/*定义ab两个整形变量用于输入两个整数* int* point1,* point2,* temp point;/*定义三个指针变量* scanf("od,%d"&a,&b);/*格式化输入a.b的值* point1=&a;/*把指针变量 point I的值指向变量a的地址* point2=&b;/把指针变量 point2的值指向变量b的地址* if (a-b) temp point= point1;/*这里的 temp point是用于临时存储 point1的值也就是变量a的地址的* point I= point2;/把 point2的值赋予 point1* point 2=temp point /*出于 point1的值已经改变无法找到,利用前面临时存储的也就是 temp point找回原 point1的值赋予 point2,打到把pont1和 t2值对换的目的* printf("d%d", point1, Fpoint2);/体利用* point1和 point2也就是分辨指向b和a的方法把值显示自爱屏幕上* ∧此题需要注意和了解是的此法并没有改变变量ab的值只是利用指针变量分别存储a和b的地址然后再把那两个指针变量的值对换 下其实就是存储在 指针变量里面a与b的地止对换,在利用poin1和* point2的方式把调换后的值显示出来这里的* point1实际就是a,此中算法并非真的 改变ab的值,而是 利用指针进行地址交换达到大小排序的目的 PLC WORLD Generated by Foxit PDF Creator Foxit Software http:/www.foxitsoftware.comForevaluationonly include <stdio. h> maino int a b;泮*定义a,b两个整形变量用丁输入两个整数* int" point1,* point2;*定义三个指针变量* scanf("oad,%d",&a&b);格式化输入a,b的值* point1-&a;*把指针变量 point1的值指向变量a的地址*/ point2=&b;/把指针变量 point2的值指冋变量b的地址* compositor( point 1, point2);/*调用自定义的排序涵数,把ab的地址传递给 point1和 point2* print"oad,%d",a,b);{打印出a.b的值* static compositor(p l, p. int"pl,*p2;/定义形式参数pl,p2为指针变量* Int temp:/*建立临时存储变量 if(*pl<*p2)/如果p1<p2注意这里的p1和*p2其实就是a和b* temp=p1;/*利用变量temp用于临时存储*p1和就是a的值* p1=*p2;/将*p1的值也就是a的值换成p2的值也就是b的值,等价于a=b*/ *p2=temp;/*将*2的值也就是temp的值等价于b=temp* /注意此题与上题不同的是,直接改变了a于b的值达到真实改变的目的* PLC WORLD Generated by Foxit PDF Creator Foxit Software http:/www.foxitsoftware.comForevaluationonly 5.入门教程:C++中的 const限定修饰符 cons t修饰符可以把对象转变成常数对象,什么意思呢? 意思就是说利用 const进行修饰的变量的值在程序的任意位置将不能雨被修改,就如同常数一样使用! 使用方法是: const int a=l;//)里定义了一个int类型的 const常数变量a; 但就于指针来说 const仍然是起作用的,以下有两点要十分注意,因为下面的两个问题很容易混淆! 我们来看一个如下的例子 include <iostream> using namespace std void main(void) const int a=10: int b=20 const int本 .e2=ld <<a<<endl pi&b cout<<pi<<""<<b<<endl cin geto 上面的代码中最重要的一句是 const int*pi 这句从右向座读作:區i是一个指向int类型的,被定义成 const的对象的指针 这样的一种声明方式的作用是可以修改pi这个指针所指向的内存地址却不能修改指向对象的值; 如果你在代码后加上*i=10;这样的赋值操作是不祓允许编译的! 好,看了上面的两个例子你对 cons t有了一个基本的认识了,那么我们接下来看一个很容易混淆的用法! 请看如下的代码: PLC WORLD Generated by Foxit PDF Creator Foxit Software http:/www.foxitsoftware.comForevaluationonly #include <iostream> using namespace std void main(void) int a const int *const pi-&a cout <<pi <<""<<a <<endl; cin. gct(, 上面的代码中最重要的一句是 const int* Const pI 这付从右向座读作:bi是一个指向int类型对象的cons指针 这样的一种声明方式的作用是你既不可以修改pi所指向对象的内存地址也不能利用指针的解引用方式修改对象的值,也就是用 *pi=10这样的方式; 所以你如樊在最后加上*i=20,想试图通过这样的方式修改对象a的值是不被允许编译的! 结合上面的两点所说,把代码修改成如卜形式后就可以必然在程序的任意的地方修改对象a的值或者是指针pi的地址了,下面的这 种写法常被用语涵数的形式参数,这样可以保证对象不会在涵数内被改变值! include <iostream> using namespace std void main( void) const int a-10;/这句和上面不同,请注意 const int const pi=&a: cout <<pi <<""<<a<<endl cin.get()

...展开详情
试读 127P 30天掌握C++精髓.pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
yiting111 内容还可以 值得参考
2014-04-01
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
上传资源赚积分or赚钱
最新推荐
30天掌握C++精髓.pdf 10积分/C币 立即下载
1/127
30天掌握C++精髓.pdf第1页
30天掌握C++精髓.pdf第2页
30天掌握C++精髓.pdf第3页
30天掌握C++精髓.pdf第4页
30天掌握C++精髓.pdf第5页
30天掌握C++精髓.pdf第6页
30天掌握C++精髓.pdf第7页
30天掌握C++精髓.pdf第8页
30天掌握C++精髓.pdf第9页
30天掌握C++精髓.pdf第10页
30天掌握C++精髓.pdf第11页
30天掌握C++精髓.pdf第12页
30天掌握C++精髓.pdf第13页
30天掌握C++精髓.pdf第14页
30天掌握C++精髓.pdf第15页
30天掌握C++精髓.pdf第16页
30天掌握C++精髓.pdf第17页
30天掌握C++精髓.pdf第18页
30天掌握C++精髓.pdf第19页
30天掌握C++精髓.pdf第20页

试读结束, 可继续阅读

10积分/C币 立即下载 >