
要提高写程序的能力只能通过多练习。多写和调试一些程序,从简单的做起,多读一些例程。C++是C的延伸,我觉得C是基础。用C能够熟练地写程序以后,再逐渐接触C++的程序设计理念可能更好一些。
人类的语言是工具,计算机语言也是工具掌握工具的最好的办法是做个(稍微大点的)东西,这样对语言会有更好的理解,知道它能做什么不能作什么,然后才是做什么工程选什么工具刚开始学语言的时候常常背语法,其实更重要的是练习练习再(大点的)练习
"关于学C++, 我向你推荐一些书(当然能够结合课内项目实践更好)
1。The C++ Programming Language(Bjarne Stroustrup)
2。 Inside The C++ Object Model (Stanley B Lippman)
(这本书介绍一些C++的内部实现)
3。Advanced C++ Programming Styles And Idioms (James O Coplien)
(这本书介绍一些C++编程的习惯用法)
4。 STL Tutorial and Reference Guide (David R Musser) (Professor Musser
是我母校的教授,STL的创始人之一。这本书介绍Generic Programming
的思想和标准)。
5。 Design Patterns (Erich Gamma) (很精典的面向对象设计的组件和实例)
当然,看任何一本书的时候都要动手(试例程或做习题)。然后尝试着在课堂项目中把书中的方法试验一下,以加深印象。"
国外C++几乎所有的教材都被翻译为中文了,如果没有翻译的也已经有影印版出版。
TCPL和D&E
TCPL和D&E分别是《The C++ Programming Language》和《The Design and Evolution of C++》的简称,均出自Bjarne Stroustrup之手。说它们是C++语言圣经,并不为过。
中文名称:
《C++程序设计语言(特别版)》,机械工业出版社
《C++语言的设计和演化》,机械工业出版社
入门教程
Stanley BLippman, Josee Lajoie, C++ Primer (3rd Edition)
《C++ Primer (3RD)中文版》,中国电力出版社
Stanley B Lippman, Essential C++
《Essential C++中文版》,华中科技大学出版社
《Essential C++(影印版)》,中国电力出版社
高效、健壮编程
《Effective C++中文版》,华中科技大学出版社
《More Effective C++中文版》,中国电力出版社
《Exceptional C++中文版》,中国电力出版社
《More Exceptional C++中文版》,华中科技大学出版社
模板和泛型编程
《C++ Templates全览(简体版)》,人民邮电出版社
《C++设计新思维:泛型编程与设计模式之应用》,华中科技大学出版社
标准库
《C++标准程序库:自修教程与参考手册》,华中科技大学出版社
《Effective STL(影印版)》,中国电力出版社
网络编程
《C++网络编程,卷1:运用ACE和模式消除复杂性》,华中科技大学出版社
《C++网络编程,卷2:基于 ACE 和框架的系统化复用》,电子工业出版社
杂项
《C++编程思想(第2版)第1卷:标准C++导引》,机械工业出版社
《C++编程思想(英文版 第2版)》,机械工业出版社
《C++沉思录》,人民邮电出版社
《深度探索C++对象模型》,华中科技大学出版社
《深度探索C++对象模型(影印版)》,中国电力出版社
C++工程领域的最高境界:
《设计模式:可复用面向对象软件的基础》,机械工业出版社
有一本书好象叫<<21天学通c++>> 这个对初学者不错对没有实际编程经验的人也有帮助 其实我上班之后才发现 我靠 上当了 什么指针破东西根本没人用 他们都是用以前牛人写的函数 然后tmd直接引用现实编程我觉得最重要的模板 指针就考试用 还有继承和高级继承那部分的东西 用的也比较多
1、区别是:
java语言没有指针但是用引用代替了指针,c需要自己控制内存的释放,而java就不需要控制内存,有垃圾回收机制。java主要擅长的领域主要是B/S架构而c主要是C/S架构。同样在执行速度上c要快于java,原因在于c没有完全摆脱低级语言,如指针。在开发的速度上c比java慢。另外java不能从事底层的开发,如 *** 作系统,驱动等。c语言没有厂商,但是java有。所以在标准定制上很多是建议性,但是java则不是,甲骨文怎么规定就是怎么做的。
2、联系:
c和java语法相似,java弥补了c的先天不足如指针、字符串、垃圾回收。可以说java是c演化而来,建立在c的基础上的高级语言。使得java语言使用起来更方便不用考虑内存,指针越界,垃圾数据等,你只要做程序应该考虑的就可以了,其他的细节有编译器给处理。比如:汇编是爷爷的话,c就是儿子,那么java就孙子了。
JAVA和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继承,多态)。而由于c++为了照顾大量的C语言使用者, 而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础上,据弃了其他语言的不足之处,从根本上解决了c++的固有缺陷。 Java和c++的相似之处多于不同之处,但两种语言问几处主要的不同使得Java更容易学习,并且编程环境更为简单。我在这里不能完全列出不同之处,仅列出比较显著的区别:
1继承:
c++支持多重继承,这是c++的一个特征,它允许多父类派生一个类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。
java不支持多继承,而有可能某个类或对象使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。与继承相比,接口有更高的灵活性,因为接口中没有任何实现的代码。一个类可以实现多个接口。
2多态:
c++中多态更容易理解的概念为:允许父类指针或名称来引用子类对象,或对象方法,而实际调用的方法为对象的类类型方法
java中多态是方法的重写Overriding和重载Overloading是多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。
3.指针:
JAVA语言让编程者无法找到指针来直接访问内存无指针,并且增添了自动的内存管理功能,从而有效地防止了c/c++语言中指针 *** 作失误,如野指针所造成的系统崩溃。但也不是说JAVA没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。这有利于Java程序的安全。
1把C++当成一门新的语言学习(和C没啥关系!真的。);
2看《Thinking In C++》,不要看《C++变成死相》;
3看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;
4不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;
5不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;
6会用Visual C++,并不说明你会C++;
7学class并不难,template、STL、generic programming也不过如此——难的是长期坚持实践和不遗余力的博览群书;
8如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;
9看Visual C++的书,是学不了C++语言的;
10浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?
11浮躁的人容易问:我到底该学什么;——别问,学就对了;
12浮躁的人容易问:XX有钱途吗;——建议你去抢银行;
13浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!
14浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;
15浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;
16把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
17C++不仅仅是支持面向对象的程序设计语言;
18学习编程最好的方法之一就是阅读源代码;
19在任何时刻都不要认为自己手中的书已经足够了;
20请阅读《The Standard C++ Bible》(中文版:标准C++宝典),掌握C++标准;
21看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
22别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;
23请看《Effective C++》和《More Effective C++》以及《Exceptional C++》;
24不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;
25和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好;
26请看《程序设计实践》,并严格的按照其要求去做;
27不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样;
28C++绝不是所谓的C的“扩充”——如果C++一开始就起名叫Z语言,你一定不会把C和Z语言联系得那么紧密;
29请不要认为学过XX语言再改学C++会有什么问题——你只不过又在学一门全新的语言而已;
30读完了《Inside The C++ Object Model》以后再来认定自己是不是已经学会了C++;
31学习编程的秘诀是:编程,编程,再编程;
32请留意下列书籍:《C++面向对象高效编程(C++ Effective Object-Oriented Software Construction)》《面向对象软件构造(Object-Oriented Software Construction)》《设计模式(Design Patterns)》《The Art of Computer Programming》;
33记住:面向对象技术不只是C++专有的;
34请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码;
35把在书中看到的有意义的例子扩充;
36请重视C++中的异常处理技术,并将其切实的运用到自己的程序中;
37经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去;
38不要漏掉书中任何一个练习题——请全部做完并记录下解题思路;
39C++语言和C++的集成开发环境要同时学习和掌握;
40既然决定了学C++,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技术,而程序设计技术是跨语言的;
41就让C++语言的各种平台和开发环境去激烈的竞争吧,我们要以学习C++语言本身为主;
42当你写C++程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计和编写(参见43);
43别心急,设计C++的class确实不容易;自己程序中的class和自己的class设计水平是在不断的编程实践中完善和发展的;
44决不要因为程序“很小”就不遵循某些你不熟练的规则——好习惯是培养出来的,而不是一次记住的;
45每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清楚才说明你真的理解了;
46记录下在和别人交流时发现的自己忽视或不理解的知识点;
47请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version 100XX;
48保存好你写过的所有的程序——那是你最好的积累之一;
49请不要做浮躁的人;
50请热爱C++!
其他应用领域的C++,使用ADO、ODBC、sqlserver等连接数据库
1、支持数据封装和数据隐藏
在C++中,类是支持数据封装的工具,对象则是数据封装的实现。C++通过建立用户定义类支持数据封装和数据隐藏。
在面向对象的程序设计中,将数据和对该数据进行合法 *** 作的函数封装在一起作为一个类的定义。对象被说明为具有一个给定类的变量。每个给定类的对象包含这个类所规定的若干私有成员、公有成员及保护成员。
完好定义的类一旦建立,就可看成完全封装的实体,可以作为一个整体单元使用。类的实际内部工作隐藏起来,使用完好定义的类的用户不需要知道类是如何工作的,只要知道如何使用它即可。
2、支持继承和重用
在C++现有类的基础上可以声明新类型,这就是继承和重用的思想。通过继承和重用可以更有效地组织程序结构,明确类间关系,并且充分利用已有的类来完成更复杂、深入的开发。新定义的类为子类,成为派生类。它可以从父类那里继承所有非私有的属性和方法,作为自己的成员。
3、支持多态性
采用多态性为每个类指定表现行为。多态性形成由父类和它们的子类组成的一个树型结构。在这个树中的每个子类可以接收一个或多个具有相同名字的消息。
当一个消息被这个树中一个类的一个对象接收时,这个对象动态地决定给予子类对象的消息的某种用法。多态性的这一特性允许使用高级抽象。
继承性和多态性的组合,可以轻易地生成一系列虽然类似但独一无二的对象。由于继承性,这些对象共享许多相似的特征。由于多态性,一个对象可有独特的表现方式,而另一个对象有另一种表现方式。
扩展资料:
C++技术应用
1、科学计算
在科学计算领域,FORTRAN是使用最多的语言之一。但是C++凭借先进的数值计算库、泛型编程等优势在这一领域也应用颇多。
2、网络软件
C++拥有很多成熟的用于网络通信的库,其中最具有代表性的是跨平台的、重量级的ACE库,该库可以说是C++语言最重要的成果之一,在许多重要的企业、部门甚至是军方都有应用。
3、 *** 作系统
在该领域,C语言是主要使用的编程语言。但是C++凭借其对C的兼容性,面向对象性质也开始在该领域有一席之地。
参考资料来源:百度百科-C++
java与c、c++的区别:Java=“C++”-“复杂性和奇异性”+“安全性和可移植性”
1全局变量
在java中不能在所有类之外定义全局变量,只能通过在一个类中定义公共、静态的变量来实现一个全局变量。
java对全局变量进行了更好的封装,而在c、c++中,依赖于不加封装的全局变量,常常造成系统的崩溃。
2指针
c,c++中的指针最灵活,但也是最容易产生错误的数据类型,由指针所进行的内存地址 *** 作常常会造成不可预知的错误,同时通过指针对某个内存地址进行显式类型转换后,可以访问一个c++中的私有成员,从而破坏了安全性,造成系统的崩溃。而java对指针进行了完全控制,java没有显式的指针类型,所有引用的对象(包括变量赋值、传递参数给方法以及数组元素)都是通过使用隐式引用,而不是通过指针来完成的。
在java中,引用还使用户容易创建诸如链接表之类的结构,而不需要显式指针,仅用指向下一个和前一个结点的变量创建一个链表结构,然后,在表中插入项目,把这些变量赋给其他结点对象。
3数组
java中,数组是第一个特殊的类对象,而引用数组和它们的内容是通过显式引用而不是使用指针运算来完成的。数组的边界是要求严格检查的,一旦越界,将会产生编译或运行错误。如同其他对象一样,把数组传递给方法,就会传递原先的引用(地址)给该数组。因而,该数组引用的内容改变,更新原先数组对象。对象数组是引用数组,其初始化时并不包含实际的对象。
java并不像c、c++那样支持多维数组,在java中,用户可以创建包含其他数组的数组来支持多维数组。
4字符串
在c、c++中,字符串是以一个空字符(\0)结尾的字符数组。为了 *** 作和管理字符串,必须把它们当作其他数组来处理。
在java中,字符串是个封装的对象,而在字符串上 *** 作的所有方法可把字符串作为一个完全的对象来处理。字符串即使可以用一个空字符结尾,也不能超越字符串终结的范围(如同数组的情况一样,字符串的边界检查是严格执行的)。
c和c++可以通过指针直接对字符串所在的内存地址进行 *** 作,并不对越界情况进行检查,而java只能通过类String或StringBuffer所提供的接口对字符串进行 *** 作,并且还要对越界情况进行检测并报告,大大增加了安全性。由于类String或StringBuffer的接口都经过明确说明,所以我们可以预知java中字符串处理的功能,而在c和c++中,只能通过库函数或者自定义函数才能对字符串进行处理。
5内存管理
在c中,程序员是通过库函数malloc()和free()来分配和释放内存的。C++则是通过运算符new和delete来分配和释放内存的。如果再次释放已释放过的内存块或未被分配的内存块,会造成系统崩溃;同样,忘记释放不再使用的内存块也会逐渐耗尽系统资源。
在java中,所有对象均通过运算符new为它们分配内存空间。通过new获得对象的处理权,而实际分配给对象的内存可能随程序运行而改变,java对此自动地进行管理,而当对象不再使用时,运行时间的垃圾收集器(Garbage Collector—GC)就释放该内存。为了“强迫”释放一个对象,移去该对象的所有引用(指定所有变量和数组元素,保持为空),下次java垃圾收集器运行时,回收该对象。如此,有效地防止由于程序员的误 *** 作而导致的错误,并且更好地利用了系统资源。
6数据类型
在c和c++中,对于不同的平台,编译器对基本的数据类型(char,int,float等)分配不同长度的字节数,如int在IBM PC中卫16位,在VAX-11中为32位,这导致了代码的不可移植性,而在java中所有的java的基本数据类型具有交叉平台和 *** 作系统的一致长度和行为,总是分配固定长度的位数,如对int总是占32位,这就保证了java的平台无关性。Java没有C和C++那样无符号数据类型。布尔类型的值不是一个整数,是具有true和false两个值,虽然在java中可以强迫转换0和1到布尔类型,但是不能把它当作1来处理。
在java中,组合(或称引用)数据类型(类,接口和数组)仅通过使用类定义来完成,像C++中支持类的struct,union和typedef关键字均已去掉。
在java中,数据类型之间的强制类型转换有许多控制,只有在不丢失信息时,才发生自动的强制类型转换,所有其他的强制类型转换必须是显式的,基本数据类型(int,float,long,char,boolean等)不能强制转换到对象,反之亦然;方法特殊的“包装”类,可以在对象和基本类型之间转换值。
7运算符
运算度优先级和结合率作用与C中一样,然而new关键字结合性比点符号(·)高,其表现与c++不同。
在java中没有C++中那样的重载运算符,此运算符以被删去,但可以使用“+”运算符来连接字符串。
8控制流
在java中,虽然if,while,for和do在语法上和c、c++一样,差别在于,每个控制流结构的测试表达式,必须返回一个实际的布尔值(true或false),而在c和c++中表达式可以返回一个整数。
在java中,不支持C和C++中的goto语句,而是通过例外处理(exception handling)语句try catch和finaly等代替c和c++中用goto来处理遇到错误时跳转的情况,使程序更可读更结构化。
9头文件
在c和c++中,用头文件来声明类的原型以及全局变量,库函数等。在大型系统中,维护这些头文件是很困难的。而java不支持头文件,类成员的类型和访问权限都封装在一个类中,运行时系统对访问进行控制,防止对私有成员进行 *** 作。同时java用import语句来与其他类进行通信,以便使用它们的方法。
10参数
Java不像c和C++那样支持函数的变长参数表的机制,所有方法的定义必须具有特定的参数个数,此外,在空参数表中不能使用void。
在java中,命令行参数表现与在c和C++中不同。在c和c++中,参数的第一个元素(args[0])是程序的名字,在java中,args[0]对应c和c++中的args[1],它没有办法获得保存java程序名称。
11其他差别
(1)java中没有预处理程序,不支持宏和#define,当说明类和实例变量时,通过final关键字来声明一个常量。在c和C++中用宏定义来实现的代码给程序的可读性带来了困难。
(2)java没有C++那样的模板类。
(3)java不包含c的const关键字,或者显式地按const引用传递的能力。
(4)java的所有函数必须是方法,而且必须依赖类。
(5)java通过接口(interface)提供单一与间接多重继承。
JAVA和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继承,多态)。而由于C++为了照顾大量的C语言使用者, 而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础上,据弃了其他语言的不足之处,从根本上解决了c++的固有缺陷。 Java和c++的相似之处多于不同之处,但两种语言几处主要的不同使得Java更容易学习,并且编程环境更为简单。
我在这里不能完全列出不同之处,仅列出比较显著的区别:
1、指针
JAVA语言让编程者无法找到指针来直接访问内存无指针,并且增添了自动的内存管理功能,从而有效地防止了c/c++语言中指针 *** 作失误,如野指针所造成的系统崩溃。但也不是说JAVA没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。这有利于Java程序的安全。
2、多重继承
c++支持多重继承,这是c++的一个特征,它允许多父类派生一个类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。Java不支持多重继承,但允许一个类继承多个接口(extends+implement),实现了c++多重继承的功能,又避免了c++中的多重继承实现方式带来的诸多不便。
3、数据类型及类
Java是完全面向对象的语言,所有函数和变量部必须是类的一部分。除了基本数据类型之外,其余的都作为类对象,包括数组。对象将数据和方法结合起来,把它们封装在类中,这样每个对象都可实现自己的特点和行为。而c++允许将函数和变量定义为全局的。此外,Java中取消了c/c++中的结构和联合,消除了不必要的麻烦。
4、自动内存管理
Java程序中所有的对象都是用new *** 作符建立在内存堆栈上,这个 *** 作符类似于c++的new *** 作符。下面的语句由一个建立了一个类Read的对象,然后调用该对象的work方法: Read r=new Read(); rwork();语句Read r=new Read();在堆栈结构上建立了一个Read的实例。Java自动进行无用内存回收 *** 作,不需要程序员进行删除。而c++中必须由程序员释放内存资源,增加了程序设计者的负担。Java中当一个对象不被再用到时,无用内存回收器将给它加上标签以示删除。Java里无用内存回收程序是以线程方式在后台运行的,利用空闲时间工作。
5、 *** 作符重载
Java不支持 *** 作符重载。 *** 作符重载被认为是c++的突出特征,在Java中虽然类大体上可以实现这样的功能,但 *** 作符重载的方便性仍然丢失了不少。Java语言不支持 *** 作符重载是为了保持Java语言尽可能简单。
6、预处理功能
Java不支持预处理功能。c/c++在编译过程中都有一个预编译阶段,即众所周知的预处理器。预处理器为开发人员提供了方便,但增加丁编译的复杂性。JAVA虚拟机没有预处理器,但它提供的引入语句(import)与c++预处理器的功能类似。
7、 Java不支持缺省函数参数,而c++支持
在c中,代码组织在函数中,函数可以访问程序的全局变量。c++增加了类,提供了类算法,该算法是与类相连的函数,c++类方法与Java类方法十分相似,然而,由于c++仍然支持c,所以不能阻止c++开发人员使用函数,结果函数和方法混合使用使得程序比较混乱。 Java没有函数,作为一个比c++更纯的面向对象的语言,Java强迫开发人员把所有例行程序包括在类中,事实上,用方法实现例行程序可激励开发人员更好地组织编码。
8、字符串
c和c++不支持字符串变量,在c和c++程序中使用null终止符代表字符串的结束,在Java中字符串是用类对象(String和StringBuffer)来实现的,这些类对象是Java语言的核心,用类对象实现字符串有以下几个优点:
(1)在整个系统中建立字符串和访问字符串元素的方法是一致的;
(2)字符串类是作为Java语言的一部分定义的,而不是作为外加的延伸部分;
(3)Java字符串执行运行时检空,可帮助排除一些运行时发生的错误;
(4)可对字符串用“十”进行连接 *** 作。
9、“goto“语句
“可怕”的goto语句是c和c++的“遗物”,它是该语言技术上的合法部分,引用goto语句引起了程序结构的混乱,不易理解,goto语句子要用于无条件转移子程序和多结构分支技术。鉴于以广理由,Java不提供goto语句,它虽然指定goto作为关键字,但不支持它的使用,使程序简洁易读。
l0、类型转换
在c和c++中有时出现数据类型的隐含转换,这就涉及了自动强制类转换问题。例如,在c++中可将一浮点值赋予整型变量,并去掉其尾数。Java不支持c++中的自动强制类型转换,如果需要,必须由程序显式进行强制类型转换。
11、异常
JAVA中的异常机制用于捕获例外事件,增强系统容错能力 try{//可能产生例外的代码 }catch(exceptionType name){ //处理 } 其中exceptionType表示异常类型。而C++则没有如此方便的机
一 ,怎样学习C语言
很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎样学习C语言我是一个教师,已经开发了很多年的程序,和很多刚刚起步的人一样,学习的第一个计算机语言就是C语言。经过这些年的开发,我深深的体会到C语言对于一个程序设计人员多么的重要,如果不懂C语言,你想写底层程序这几乎听起来很可笑,不懂C语言,你想写出优秀高效的程庌輌这简直就是天方夜谭。为什么C语言如此重要呢
第一:C语言语法结构很简洁精妙,写出的程序也很高效,很便于描述算法,大多数的程序员愿意使用C语言去描述算法本身,所以,如果你想在程序设计方面有所建树,就必须去学它。
第二:C语言能够让你深入系统底层,你知道的 *** 作系统,哪一个不是C语言写的所有的windows,Unix,Linux,Mac,os/2,没有一个里外的,如果你不懂C语言,怎么可能深入到这些 *** 作系统当中去呢更不要说你去写它们的内核程序了。
第三:很多新型的语言都是衍生自C语言,C++,Java,C#,J#,perl哪个不是呢掌握了C语言,可以说你就掌握了很多门语言,经过简单的学习,你就可以用这些新型的语言去开发了,这个再一次验证了C语言是程序设计的重要基础。还有啊,多说一点:即使现在招聘程序员,考试都是考C语言,你想加入it行业,那么就一定要掌握好C语言。
那么究竟怎样学习C语言呢
1:工欲善其事,必先利其器
这里介绍几个学习C语言必备的东东:
一个开发环境,例如turbo C 20,这个曾经占据了DOS时代开发程序的大半个江山。但是现在windows时代,用turbo C有感觉不方面,编辑程序起来很吃力,并且拖放,更没有函数变量自动感应功能,查询参考资料也不方便。建议使用Visual C++,这个东西虽然比较大块头,但是一旦安装好了,用起来很方便。
一本学习教程,现在C语言教材多如牛毛,但推荐大家使用《C语言程序设计》谭浩强主编 第二版 清华大学出版社,此书编写的很适合初学者,并且内容也很精到。
除此以外,现在有很多辅助学习的软件,毕竟现在是Window时代了,学习软件多如牛毛,不象我们当初学习,只有读书做题这么老套。我向大家推荐一个“集成学习环境(C语言)”,里边的知识点总结和例程讲解都非常好,还有题库测试环境,据说有好几千题,甚至还有一个windows下的trubo C,初学者甚至不用装其它的编译器,就可以练习编程了,非常适合初学者。还有一个“C语言学习系统”软件,不过感觉只是一个题库系统,如果你觉得题做的不够,不妨也可以试试。
2:葵花宝典
学习计算机语言最好的方法是什么答曰:读程序。
没错,读程序是学习C语言入门最快,也是最好的方法。如同我,现在学习新的J#,C#等其他语言,不再是抱着书本逐行啃,而是学习它们的例程。当然,对于没有学过任何计算机语言的初学者,最好还是先阅读教程,学习完每一章,都要认真体会这一章的所有概念,然后不放过这一章中提到的所有例程,然后仔细研读程序,直到每一行都理解了,然后找几个编程题目,最好是和例程类似的或一样的,自己试图写出这段已经读懂的程序,不要以为例程你已经读懂了,你就可以写出和它一样的程序,绝对不一定,不相信你就试一试吧,如果写不出来,也不要着急,回过头来再继续研究例程,想想自己为什么写不出来,然后再去写这段程序,反反复复,直到你手到擒来为止,祝贺你,你快入门了。
3:登峰造极
写程序的最高境界其实就是掌握各种解决问题的手段(数据结构)和解决问题的方法(算法)。
是不是写出底层程序就是程序设计高手呢非也,写底层程序,无非是掌握了硬件的结构,况且硬件和硬件还不一样,要给一个芯片写驱动程序,无非就是掌握这块芯片的各种寄存器及其组合,然后写值读值,仅此而已。这不过是熟悉一些io函数罢了。那么怎样才算精通程序设计呢怎样才能精通程序设计呢举个例子:你面前有10个人,找出一个叫“张三”的人,你该怎么办第一种方法:直接对这10个人问:“谁叫张三”。第2种方法:你挨个去问“你是不是张三”,直到问到的这个人就是张三。第三种方法:你去挨个问一个人“你认不认识张三,指给我看”。不要小看这个问题,你说当然会选第一种方法,没错恭喜你答对了,因为这个方法最快,效率最高,但是在程序设计中找到解决问题的最优方法和你用的手段却是考验一个程序员程序设计水平的重要标志,而且是不容易达到的。刚才这个问题类似于数据结构和算法中的:Map数据结构,穷举查找和折半查找。所以掌握好数据结构和一些常用算法,是登峰造极的必然之路。最后给大家推荐严尉敏的《数据结构》清华大学出版社,希望每一个想成为程序设计高手的人研读此书。
二,语言学习方法
谈谈偶的学习方法,抛砖引玉!
学习不论讲不讲方法,最终都能学会。但是别人1个月学会了,而你却100年才学会,这不就晚了么:)所以说,学习还是要讲究方法的。学习方法正确,事半功倍;学习方法不正确,事倍而功半。
什么才是学习C语言的捷径我的答案是看书。书中所写,是前人数十年经验所写,看十本书,就相当于汲取了前人数十年的功力,那么你的内功也会迅速上升1甲子。:)书当然要看好书,只有好书才营养丰富。假如你花了1天时间看了一本破书,而该书介绍的知识虽然对于你来说是全新的知识,但是由于书中组织不当、或者深度不够,使你获取的营养很少,还不如自己研究一天来的快,这种书就不值当看了。学习C语言要看那些好书我认为首先要把基础书给看扎实了,比如《C语言之四书五经》中介绍的4本。(虽然这些书很多已经绝版了,但我相信电子版也是很有益处。况且,如果你真的想看,我相信你一定有办法搞的到。)这些书你会在很短的时间内看完(比如一两个月),这取决于你的基础和悟性。之后要看那些书呢我不妨再列几本。Bjarne Stroustrup的《C++程序设计语言》(The C++ Programming Language)一定要看,这本书里面对于C的一些基础概念的定义,比我见过的其他任何C语言书都要全,都要仔细;Bjarne Stroustrup的《C++语言的设计与演化》(The Design and Evolution of C++)和David RHanson 的《C语言接口与实现 创建可重用软件的技术》(C Interfaces and Implaementations Techniques for Creating Reusable Software)一定要看,这两本书讲述了如何用C来实现异常处理、实现类型的封装和扩展等一些大的项目中经常用到的高级技术。其他的书, *** 作系统的要看,编译原理的要看,算法的要看,模式的也要看。读书破万卷,coding如有神。总而言之,就如《传》中云:“生而知之者,上也;学而知之者,次也;困而学之又其次也。”我们不能总是因困而学之,而要做到兵马未动,粮草先行。
看书是学习的导向,书中能一一介绍清楚概念,但书却不能把应用的细节一一介绍给你,因为应用总是招数繁复,变化多端。因此我们要想熟悉招数,懂得书中所讲怎么使用,还要多读源码。Linus给别人解答问题的时候,常说Read the ing source code;候捷也在其文中提到“源码之前,了无秘密。”这就是大师的箴言呀。源码就像是动画、就像是幻灯片,把书中的招式一一演练给你看。可以说高手的经验大都是源自代码。源码和书一样,也是要看好的,不要看差的。在此,我推荐看Linux kernel source code 和 Linux tcp/ip source code。这两套代码都是开源的,垂手可得。此外,还可以配合着Andrew STanenbaum的《 *** 作系统的设计与实现》(Operating Systems:Design and Implementation)、毛德 *** 胡希明的《Linux内核 源代码情景分析》、Jonathan Corbet,Alessandro Rubini,Greg Kroah-Hartman合著的《Linux设备驱动程序》(Linux Device Driver,3e)、WRichard Stevens《TCP/IP详解(3部)》 (TCP/IP Illustracted )、WRichard Stevens《UNIX环境高级编程》(Advanced Programming in the UNIX Environment,新版增加了Linux kernel的内容)等书来看,方便的很当然程序不是看出来的,是写出来的。我高中的时候每天坚持写6个小时程序,《数据结构》和排列组合、图论方面的习题反复做了N遍。到现在虽然已经时隔五六年,很多内容早已淡忘掉,但却培养了我很强的编码能力和调试能力,直到现在还对我的工作有很大的帮助。
学习忌贪多、忌浮躁、忌急功近利、忌目中无人。把学习计划放的长一些,培养一个好的学习方法,一步一步慢慢走,终能成为高手。
以上就是关于C++语言学习方法求教全部的内容,包括:C++语言学习方法求教、所有面向对象编程语言都支持三个概念:封装、多态性和继承,但JAVA语言代替C语言了嘛、c++里的类的继承和多态与Java里的继承和多态的区别是等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)