2.1 第一个C++程序
学习编程的第一步是先写一个简单的程序,学习任何编程语言都需要编写一个“HelloWorld”程序。下面是一个简单的C++程序,同样也是一个“HelloWorld”程序,代码如下:
一个简单的C++程序运行结果如图2.1所示。
图2.1 C++程序运行结果
在一个C++程序中包含了头文件引用、应用命名空间、主函数、字符串常量、数据流等几部分,这些都是C++程序经常用到的。这是一段输出“HelloWorld”的小程序,程序第1行使用的“#”是一个预处理标志,预处理表示该行代码要先进行处理,所以要在编译代码之前运行,include 是一个预处理指令,其后紧跟一对尖括号“<>”,尖括号内是一个标准库。第2行使用了命名空间std。从第3行开始到第6行结束是程序执行入口,main()函数是每个C++程序都必须有的,花括号“{}”表示main()函数的函数体,我们可以在函数体中编写要执行的代码。下面对C++程序常用的概念进行介绍。
注意:在C++代码中,所有的字母、数字、括号及标点符号均为英文输入法状态下的半角符号,而不能是中文输入法或者英文输入法状态下的全角符号,如图2.2所示,中文输入法状态下的分号引起的错误提示。
图2.2 编译错误
2.1.1#include指令
在C++程序中第1行带“#”的语句被称为宏定义或预编译指令,关于什么是C++程序中的语句,什么是宏定义或预编译指令会在后面的章节讲解。#include在代码中是包含和引用的意思,其后面紧跟着一对尖括号“<>”,第1行代码#include<iostream>就是说明代码要引用iostream文件中的内容,当编译器在编译程序时,会将iostream文件中的内容在#include<iostream>中展开。
常见错误:忘记包含iostream头文件,在忘记包含iostream头文件后,原来输出“HelloWorld”的程序在编译时会报错,按F4键查看到的错误如图2.3所示。从中可以发现不包含iostream头文件后,很多相关的功能都是不能使用的。
图2.3 忘记包含iostream头文件时的编译错误
2.1.2 iostream标准库
iostream(输入/输出)头文件是一个标准库,换句话说,就是输入(in)、输出(out)和流(stream)。iostream是取in和out的首字母与stream结合而成的,它包含了许多函数,每个函数都有其自身的作用。如果没有包含iostream头文件,那么就不能使用cout来输出语句。在这里用户需要记住,必须使用#include<iostream>语句,才能在程序中使用与其相关的功能。
注意:函数就是能够实现特定功能的程序模块。
常见错误:当包含iostream头文件时,注意不要忘记输入一对尖括号“<>”,如图2.4所示为没有尖括号引起的错误提示。由于没有尖括号,使得程序无法包含iostream头文件,导致与其相关的功能都不能使用。
图2.4 编译错误
2.1.3 命名空间
在C++程序中,命名空间的目的是为了减少和避免命名冲突。namespace是指标识符的各种可见范围。当使用C++标准库中的标识符时,有一种简便的方法,代码如下:
这样,在命名空间std中定义的所有标识符都有效,在程序中我们使用cout来输出字符串。如果没有这条语句,那么只能输入如下代码:
我们经常使用cout和cin,因此在每个程序的开头加上“using namespace std;”语句是很有必要的。
常见错误:当using namespace std语句后面没有添加分号时,会引起编译错误提示,如图2.5所示。
图2.5 编译错误
“std::”是一个命名空间的标识符,由于C++标准库中的函数或对象都是在命名空间std中定义的,所以我们要使用的标准库中的函数或对象都要用std来定义。
cout是C++标准库提供的一个对象,而C++标准库在命名空间中被指定为std,所以在使用cout时,前面必须添加“std::”,这样编译器就会明白我们调用的cout是命名空间std中的cout。
2.1.4 main()函数
单词 main 表示主函数,main()函数是程序执行的入口,程序从 main()函数的一条指令开始执行,直到main()函数结束,整个程序也将结束执行。需要注意的是,在代码中main后面有个小括号“()”,在小括号中是放置参数的。
2.1.5 函数体
花括号“{}”中的内容是需要执行的内容,称为函数体。函数体是按照代码的先后顺序执行的,写在前面的代码先执行,写在后面的代码后执行。代码“cout<<"HelloWorld\n";”表示通过输出流输出单词“HelloWorld”,代码中的双引号表示单词是字符串常量,cout表示输出流,“<<”表示将字符串传送到输出流中。
2.1.6 函数返回值
void表示函数的返回值,函数的返回值是用来判断函数的执行情况及返回函数的执行结果的。void表示不返回任何数据。如果要返回数据则需要使用return语句。
2.1.7 注释
代码注释是禁止语句的执行,编译器不会对注释的语句进行编译。在C++程序中有两种注释方法,“//”是单行注释,单行注释只能注释符号“//”后面的内容,到本行代码结束的位置结束;“/**/”是多行注释,多行注释的使用方法是“/*”放在将要注释代码的前面,“*/”放在将要注释代码的末尾,“/*”和“*/”中间的内容就会被注释。另外,在多行注释中不允许嵌套多行注释,如“/*/**/*/”,最后出现的“*/”将会无效。在第一个C++程序中加入注释,代码如下:
注释不仅可以在调试时使用,用户还可以在代码中加入注释,用来说明代码的用意,方便日后自己或其他人查看。