1、1C+学习笔记因为是初学,所以笔记一定会很不专业,稚嫩又存在很多漏洞,写这些只是为了记录学习过程,培养自己的表达能力。最重要的是多留下一点记忆,如果我什么时候突然想放弃了,看到学习笔记也许会继续坚持下去。内容会结合我正在使用的C+ Primer 。顺便说一下,我写这些并不是提供给想学习 C+的朋友的,我会耽误你们。如果有意学习,也应该去寻找好的教材来用。之前一些人和我说过学 C+要注意的问题,还有个叫最近爱下棋的网友分享了他的学习方法,在这里感谢一下。然后不得不提一下 C+的读法,也许很多人和我一样一开始都把它读作“C 加加” ,其实应该是“CPP”或“C PLUS PLUS pls”。特意注
2、了音标是为了方便像我一样英语很渣的人能读正确,这个单词就是正号、加号的意思。再说说C+ Primer ,英语好的同学肯定已经看出标题是 C+入门书了,最开始我觉得这个标题相当没诚意,内容的难度并不容易理解,显然不像什么入门书。可是现在我在逐渐改变看法,因为我学会了书里提供的第一段简单的程序,在书里每行都是加了注释的,我就不一一加上来了。/ myfirst.cppdisplays a message#include int main()using namespace std; cout int main()using namespace std;cout int main()using name
3、space std;cout 是这段程序中的预处理器,它的作用是在程序运行之前对源文件进行处理,将文件 iostream 的内容添加到程序中,书中说这是一种典型的预处理器操作:在源代码被编译之前,替换或添加文本。我估计你也和我一样不会在乎为什么要把 iostream 文件的内容添加到程序里,但是这里还是要做些解释。按书里说的,答案涉及到程序与外部世界的通信。iostream 中的 io 指的是输入和输出,也就是进入程序的信息和程序发出去4的信息。C+ 的输入/ 输出涉及到 iostream 文件的多个定义。cout 被用来显示消息,比如:cout 。原始文件并没有修改,而是使原始文件和 ios
4、tream 组成一个复合文件,编译的下一阶段将使用到这个文件。像 iostream 这样的文件叫包含文件, (被我蒙对了,include 本身就是包含的意思)由于它们被包含在其他文件中,所以也叫头文件(head file) ,C+ 编辑器自带了很多头文件,每个头文件都支持一组特定的工具。C语言的传统是每个头文件都要加上扩展名.h ,将其作为一种通过文件名称标识文件类型的简单方式。比如说 math.h 头文件支持 C 语言各种数学函数(我初中就没听过关于函数的数学课,要不肯定考上高中了 O(_)O 哈哈英语物理化学我没有一样学的好的,语文倒是偶尔振作一下) 。一开始 C+也是这样,支持输入和输出
5、的头文件叫做 iostream.h。后来 C+做了改变。现在对老式C 的头文件保留了 .h 扩展名(C+仍可以用) ,C+去掉了扩展名。部分 C 头文件被转换成了 C+头文件,去掉了扩展名(变成 C+的风格) ,加上了前缀c(表明来自 C 语言) 。比如上面提到过的 math.h 头文件在 C+版本中是cmath。有时候 C 版本的头文件和 C+版本的头文件相同,有时候新版本做了改动,对于纯粹的 C+版本来说,去掉 h 不止是形式上的变化,没有 h 的头文件依然可以使用名称空间。关于名称空间,要放在后面讲。接下来是程序的第二行:int main()int main()是程序的函数头(funct
6、ion heading) 。在书中为了方便读者理解前面的特性,特意把 main()放在了讲解的首位,提供了一段去掉修饰的代码。int main()Statementsreturn 0;这几行表明了有一个名为 main()的函数,名描述了该函数的行为。这几行代码构成了一个函数定义,定义的第一行就是函数头,括号中的内容是函数体。函数头对函数与程序其他部分的接口进行总结,函数体指出函数应该做什么的计算机指令。完整的指令叫语句,所有语句都要以分号结束,练习范例程序时我的错误常常出现在画蛇添足和虎头蛇尾上,也就是说总是不注意分号,不是多了就是少了,偶尔还会输入成冒号(这个偶尔的发生几率很大)最后一部分叫
7、返回语句,函数结束。说说作为接口的函数头。函数名(int main())前面的部分是函数返回类型,描述的是返回给调用他的函数的信息。括号中的部分是形参列表或参数列表,它描述的是从调用函数传递给被调用函数的信息。简单的说,根据我的理解(有可能是错误的) ,int main 描述了谁被谁调用,括号中的内容描述了谁调用了谁。不理解就不理解吧,我也有点糊涂。main()通常被启动代码调用,启动代码是由编译器添加上去的,是程序和操作系统之间的桥梁。这个函数头5描述的是 main()和操作系统之间的接口。return 0;只适应于该函数,不适用于其他函数。关于 main()就只记下这些了,太多的话有抄书嫌
8、疑,其实确实很多内容都是重复书里的话。然后是名称空间,如果使用 iostream 而不是 iostream.h,则需要下面的名称空间编译指令使 iostream 的程序定义可用。using namesapace std;名称空间支持 C+的一个新特性。有一个潜在问题,不同厂商的产品中,也许会出现名字相同的函数。直接调用的话编译器会不知道该使用哪个版本。名称空间的作用就是把厂商封装好的产品放在一个叫名称空间的单元中,这样就可以使用名称空间的名称来指出想使用哪个厂商的版本。下面该说道那个可以用来显示消息的 cout 了。cout “Come up and C+ me some time.”;双引号
9、引起的部分是将要发送给 cout 的内容,叫字符串,表示该语句将把这个字符串发送给 cout,cout 是个预定义的对象。知道如何显示字符串、数字、单个字符等等。引用书中的话:从概念上看,输出是一个流,即从程序流出一系列字符。cout 表示这种流,它的属性是在 iostream 文件中定义的。cout 对象属性包括一个插入操作符() ,它可以将右侧的信息插入到流中。最后到了这个 endl,一开始我以为是代表结束的,没想到是表示换行,它的作用就是换行,如果不输入进去的话,运行时本来分成两行的内容会变成一行,原本第二行的开头会从第一行末尾开始。有一个减少输入量得方法是在该行最后加上n,比如:cout “Come up and C+ me some time.”;cout endl;可以改成:cout “Come up and C+ me some time.n”关于第一个程序就这些了,写完全部内容还是用了很长时间的,第一天晚上写累了,到第二天白天才把剩余的内容补充完。再次申明一下,这些不是用来指导学习的,而是培养我的表达能力,再则我发现记录这些内容有助于加深我对知识的理解。我会提供一些网上被推荐过的教材的名称,嗯,就这些。