写C++程序其实很简单,直接用记事本写好代码,然后用一个编译器做编译运行就可以了;不过这意味这我们得自己保证语法正确,严重影响开发效率。所以实际应用中我们一般都会使用功能更强大的工具,除了提供编译器外,还可以给我们做语法检查和提醒,方便我们调试程序——这就是所谓的“集成开发环境”(IDE)。
Windows系统环境下,最普遍、最好用的IDE就是Visual Studio了,这是微软官方的开发工具,功能非常强大。
打开Visual Studio的中文版官方网站 Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器,点击“下载Visual Studio”按钮,选择最新的免费社区版Community 2022。然后双击运行安装程序VisualStudioSetup.exe。
在安装引导程序中,选择自己需要的组件。我们直接选择“使用C++的桌面开发”即可,这个选项会打包安装Windows下C++开发的所有组件。注意不需要选“通用Windows平台开发”,这个还包含了.net平台,是针对C#开发的。
点击“安装”,引导程序会自动帮我们下载和安装所有需要的组件,这个过程可能需要花费一些时间。如果选择了“安装后启动”,那么安装完成就会自动运行。开始的界面是登录微软账号,我们可以直接跳过。
选择开发设置为“Visual C++”,选择自己喜欢的界面主题色,然后点击启动。
Visual Studio启动之后,我们首先应该创建一个项目。所谓“项目”,就是一个工作任务,需要实现相应的需求。点击“创建新项目”。
直接选择一个空项目。
指定项目名称和保存位置。
在打开的解决方案界面里,右键点击“源文件”文件夹图标,添加一个新建项。我们要添加的是一个C++文件,命名为HelloWorld,后缀名是.cpp。
接下来我们就可以写代码了。
下面就是一段最简单的代码,我们在屏幕上输出Hello World。
#include
int main()
{
std::cout << "Hello World!" << std::endl;
}
我们可以点击工具栏的按钮 (快捷键F5),用一个本地的调试器来“调试”代码;所谓的调试,就是查看具体的运行过程,我们可以用它来解决出现的问题。当然也可以点它旁边的三角按钮 ,这是不调试直接运行(快捷键Ctrl+F5)。
界面上弹出了一个窗口,显示出了我们想要的信息“Hello World!”。后面还跟着一串信息,这是调试控制台告诉我们,程序已经执行完毕正常退出了。随便一个键,就可以关闭这个窗口。
这个简单的程序里,主要包括了这样几部分。
这是一个预处理指令,告诉编译器我们需要使用一个叫做iostream的库。因为我们需要输出信息,而系统的标准库提供了这样的功能,所以要用#include做一个引入的预处理。
接下来的主体,是一个“主函数”。
所谓的函数,就是包装好的一系列要执行的操作,可以返回一个结果。一个C++程序可以包含很多函数,其中一个必须叫做main,它是执行程序的入口。也就是说,当我们运行这个程序的时候,操作系统就会找到这个“主函数”开始执行。
main() 的定义形式如下:
int main()
{
statements
return 0;
}
具体细分,第一行int main()叫做函数头,下面的花括号扩起来的部分叫函数体。函数头定义了函数的名字叫main,前面的int表示返回值是整数类型(integer);后面的括号里面本应该写传入的参数列表,这里是空的。花括号包围的部分就是函数体,里面就是我们要执行的操作。
函数体里,每一步操作都是一个“语句”(statement),用分号结尾。我们这里的语句,执行的就是输出Hello World的操作。
std::cout << "Hello World!" << std::endl;
这是一个“表达式”。所谓表达式,一般由多个运算的对象和运算符组成,执行运算之后会得到一个计算结果。在这里,两个连在一起的小于号“<<”就是一个用来输出的运算符。它的使用规则是:左边需要一个“输出流”的对象,也就是输出到哪里;右边是要输出的内容,最简单的就是一个“字符串”,需要用双引号引起来。
所以 std::cout << "Hello World!" 的意思就是:将“Hello World!”这串信息,输出到cout这个对象。cout就是一个输出流对象,iostream库里定义了它的功能,接收到信息之后就可以输出显示了。而cout前面的std是所谓的“命名空间”(namespace),主要是为了避免还有别的cout对象重名起冲突。这里的双冒号“::”也是一个运算符,叫做作用域运算符,专门指明了我们用的cout是标准库std中的。如果不想总用双冒号,也可以直接加上一句:
using namespace std;
这样就可以直接用cout,不需要加std::了。
输出运算符 << 得到的计算结果,还是它左边的那个输出流对象cout。这样一来,我们就可以在后面继续写入信息信息了。所以后面的 << endl ,其实就是把 endl 这个内容,又写入到cout中输出了。这个endl是一个“操作符”,表示结束一行,并把缓冲区的内容都刷到输出设备。
最后一行语句就是返回一个值。大多数系统中,main的返回值是用来指示状态的。返回0表示成功,非0表示出错,具体值可以用来表示错误类型,这是由系统定义的。
我们这里写了return 0,其实不写也是可以的,默认正常运行结束就会返回0。