分类: C/C++
2010-07-03 22:05:07
第1章:快速入门
1.1 每个C++程序都包含一个或多个函数,而且必须有一个命名为main。操作系统通过调用main函数来执行程序,main函数则执行组成自己的语句并返回一个值给操作系统。操作系统通过main函数返回的值来确定程序是否成功执行完毕。返回0值表明程序成功执行完毕。main函数是唯一被操作系统显示调用的函数。定义main函数和定义其他函数一样,必须指定4个元素:返回类型、函数名、圆括号内的形参表(可能为空)和函数体。main函数的返回值必须为int型(内置类型),函数体式以花括号 { 开始并以花括号 } 结束的语句块。在C++中多数语句以分号 ; 作为结束标记。返回类型必须和函数的返回类型相同,或者可以转换成函数的返回类型。在大多数系统中,main函数的返回值是一个状态指示器,返回0值往往表示main函数成功执行完毕,任何其他非零的返回值都有操作系统定义的含义。通常非零返回值表明有错误出现,每一种操作系统都有自己的方式告诉用户main函数返回什么内容。程序文件称作源文件,名字由文件名和文件后缀两部分组成。文件后缀通常也表明程序是用什么语言编写的,以及选择哪一种编译器运行。访问main函数的返回值的方式和系统有关(不论UNIX还是Windows系统,执行程序后,必须发出一个适当的echo命令:如,$echo $? 或c:\> echo %ERRORLEVEL%。
1.2 C++并没有直接定义进行输入或输出(IO)的任何语句,这种功能是由标准库提供的。处理格式化输入和输出的iostream库的基础是两种命名为istream和ostream的类型,分别表示输入流和输出流。流是指要从某种IO设备上读入或写出的字符序列。属于“流”试图说明字符是伴随时间顺序生成活消耗的。标准库定义了4个IO对象。cin:处理输入时的istream类型对象,也称为标准输入。cout:处理输出时的ostream类型对象,也称为标准输出。cerr:通常用来输出告警和错误信息给程序的使用者,也称为标准错误。clog:用于产生程序执行的一般信息。运行程序时,大部分操作系统都提供了重定向输入或输出流的方法,可以将这些流与所选择的文件联系起来。
预处理指示:#include告诉编译器要使用iostream库,尖括号里的名字是一个头文件。#include指示必须单独写成一行——头文件名和#include必须在同一行。通常#include指示应该出现在任何函数的外部,习惯上都在程序文件开头部分出现。
C++中,一个表达式通常由一个或几个操作数和通常是一个操作符组成。<<是输出操作符,将其右操作数写到作为其左操作数的ostream对象。C++中,每个表达式都会产生一个结果,通常是将其操作符作用到其操作数所产生的值。输出操作返回的值是输出流本身。endl是一个特殊值,称为操纵符,将它写入输入流时,具有输出换行的效果,并刷新与设备相关联的缓冲区,通过刷新缓冲区,用户可以立即看到写入到流中的输出。在调试过程中插入输出语句,都应该刷新输出流,忘记刷新可能会造成输出停留在缓冲区中,导致对程序崩溃位置的错误推断。
使用命名空间,程序员可以避免由于无意中使用了与库中所定义名字相同的名字而引致冲突。标准库使用命名空间的副作用是,当我们使用标准库中的名字时,必须显式地表达出使用的命名空间std下的名字。std::out使用了作用域操作符::表示使用的是定义在命名空间std中的out。
输入操作符>>行为与输出操作符相似,输入操作符返回其左操作数作为结果。由于输入操作符返回其左操作数,我们可以将输入请求序列合并成单个语句,如std::cin>>v1>>v2;。
iostream库定义了接受全部内置类型的输入输出操作符版本,在写C++程序时,大部分出现空格的地方可以用换行符代替。这条规则的一个例外是字符串字面值中的空格符不能用换行符代替。另一个例子是空格符不允许出现在预处理指示中。给变量一个初始值几乎总是正确的,但不要求必须这样做。当我们确定变量在第一次使用时会赋一个新值,那就不需要创建初始值。定义变量时,应该给变量赋初始值,除非确定将变量用于其它意图之前会覆盖这个初值。如果不能保证读取变量之前重置变量,就应该初始化变量。
1.3 C++中有单行注释和成对注释两种类型的注释。单行注释以双斜线//开头,注释对以/*开头,以*/结尾。程序通常混用两种注释形式。注释对一般用于多行解释,而双斜线注释则常用于半行或单行的标记。太多的注释混入程序代码可能会使代码难以理解,通常最好是将一个注释块放在所解释代码的上方。代码改变时,注释应与代码保持一致,错误的注释比没有注释更糟糕。注释对不可嵌套。临时忽略一段代码更好的方法,是用编辑器在要忽略的每一行代码前面插入单行注释。这样,你就无需担心要注释的代码是否已包含注释对。