C++从介绍到HelloWorld
- 一、C++的介绍
- 1. 简介
- 2. 应用场景
- 3. C++的标准![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e3efb0f207f647729b92c0b5bcd4b330.png)
- 4. C++的运行过程
- 二、Visual Studio的安装
- 1. 什么是Visual Studio
- 2. Visual Studio的安装
- 三、完成HelloWorld
- 1. 新建项目
- 2. 新建cpp文件
- 3. 编写代码
- 4. 代码解读
- 4.1 #include<iostream>
- 4.2 主函数 main()
- 4.3 语句
- 4.4 返回值
- 附加:注释
- 5. 代码改进
一、C++的介绍
1. 简介
C++ 是一门非常经典的高级编程语言。顾名思义,C++可以看做是C语言的增强版,在C的基础上扩展了更多的功能;最主要的扩展,就是面向对象和泛型编程。
2. 应用场景
C++完全兼容C,具有C面向硬件的特性;此外还拥有面向对象和泛型编程的扩展。所以C++编写的程序运行效率高、功能强大,特别适合用在系统级应用场景上。所以我们经常可以看到,偏向底层、系统的开发,一般用的语言都是C++。常用的场景如:底层硬件和系统编程、嵌入式开发、游戏开发。
3. C++的标准
- ANSI(American National Standards Institute,美国国家标准局)在制定了C语言标准之后,在90年代专门设了一个委员会来制定C++的标准,并和ISO(国际标准化组织)一起创建了联合组织ANSI/ISO。1998年,第一个C++国际标准终于出炉了;这个标准在2003年又做了一次技术修订。因此我们一般所说的C++标准,第一版往往被叫做C++ 98/03。
- 跟大多数语言一样,C++也在不停地发展更新。ISO在2011年批准了C++新标准,这可以认为是C++的2.0版本,一般被叫做C++ 11。
- C ++ 11新增了很多新特性,极大地扩展了C++的语言表达能力。此后在2014年和2017年,又出了两个新版本C++标准,一般叫做C++ 14和C++ 17,不过这两个版本增加的内容并不多;真正意义上的下一个大版本是2020年的C++ 20,它再一次给C++带来了大量的新特性。
4. C++的运行过程
- 首先编写C++程序,保存到文件中,这就是我们的源代码;
- 编译。用C++编译器将源代码编译成机器语言,得到的这个结果叫做目标代码;
- 链接。C/C++程序一般都会用到库(library),这些库是已经实现好的目标代码,可以实现特定的功能(比如在屏幕上把信息打印显示出来)。这时我们就需要把之前编译好的目标代码,和所用到的库里的目标代码,组合成一个真正能运行的机器代码。这个过程叫做“链接”,得到的结果叫做可执行代码;
- 运行。可执行代码就是可以直接运行的程序,运行它就可以执行我们想要的操作了。
二、Visual Studio的安装
1. 什么是Visual Studio
写C++程序其实很简单,直接用记事本写好代码,然后用一个编译器做编译运行就可以了;不过这意味这我们得自己保证语法正确,严重影响开发效率。所以实际应用中我们一般都会使用功能更强大的工具,除了提供编译器外,还可以给我们做语法检查和提醒,方便我们调试程序——这就是所谓的“集成开发环境”(IDE)。Windows系统环境下,最普遍、最好用的IDE就是Visual Studio了,这是微软官方的开发工具,功能非常强大。
2. Visual Studio的安装
- 打开 Visual Studio的中文版官方网站链接,点击“下载Visual Studio”按钮,选择最新的免费社区版Community 2022。然后双击运行安装程序VisualStudioSetup.exe。
- 在安装引导程序中,选择自己需要的组件。我们直接选择“使用C++的桌面开发”即可,这个选项会打包安装Windows下C++开发的所有组件。注意不需要选“通用Windows平台开发”,这个还包含了.net平台,是针对C#开发的。
- 等待安装过程结束,登录微软账号过程可以跳过,随后根据自己的喜好选择相关的界面,启动Visual Studio。
三、完成HelloWorld
1. 新建项目
- Visual Studio启动之后,我们首先应该创建一个项目。所谓“项目”,就是一个工作任务,需要实现相应的需求。点击“创建新项目”。
- 直接选择一个空项目,指定项目名称和保存位置。
- 这此处还有一个“解决方案”(Solution)的概念,其实就是一组有关联的项目,共同合作解决一个需求。
2. 新建cpp文件
在打开的解决方案界面里,右键点击“源文件”文件夹图标,添加一个新建项。我们要添加的是一个C++文件,命名为HelloWorld,后缀名是.cpp
。
3. 编写代码
输出HelloWorld的代码如下:
① 使用命名空间
#include<iostream>
int main()
{
std::cout << "Hello World!" << std::endl;
}
② 未使用命名空间
#include<iostream>
using namespace std
int main()
{
cout << "Hello World!" << endl;
}
我们可以点击工具栏的按钮【本地Windows调试】 (快捷键F5),用一个本地的调试器来“调试”代码;所谓的调试,就是查看具体的运行过程,我们可以用它来解决出现的问题。当然也可以点它旁边的【三角按钮】,这是不调试直接运行(快捷键Ctrl+F5)。运行后的结果如下:
界面上弹出了一个窗口,显示出了我们想要的信息“Hello World!”。后面还跟着一串信息,这是调试控制台告诉我们,程序已经执行完毕正常退出了。随便一个键,就可以关闭这个窗口。
4. 代码解读
4.1 #include
这是一个预处理指令,告诉编译器我们需要使用一个叫做iostream
的库。因为我们需要输出信息,而系统的标准库提供了这样的功能,所以要用#include
做一个引入的预处理。
4.2 主函数 main()
接下来的主体,是一个“主函数”。所谓的函数,就是包装好的一系列要执行的操作,可以返回一个结果。一个C++程序可以包含很多函数,其中一个必须叫做main,它是执行程序的入口。也就是说,当我们运行这个程序的时候,操作系统就会找到这个“主函数”开始执行。main()
的定义形式如下:
int main()
{
statements
return 0;
}
具体细分,第一行int main()
叫做函数头,下面的花括号扩起来的部分叫函数体。函数头定义了函数的名字叫main
,前面的int
表示返回值是整数类型(integer);后面的括号里面本应该写传入的参数列表,这里是空的。花括号包围的部分就是函数体,里面就是我们要执行的操作。
4.3 语句
函数体里,每一步操作都是一个“语句”(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
是一个“操作符”,表示结束一行,并把缓冲区的内容都刷到输出设备。
4.4 返回值
最后一行语句就是返回一个值。大多数系统中,main
的返回值是用来指示状态的。返回0表示成功,非0表示出错,具体值可以用来表示错误类型,这是由系统定义的。我们这里写了return 0
,其实不写也是可以的,默认正常运行结束就会返回0。
附加:注释
在C++中,有两种注释的表示。一种是单行注释,用双斜线“//”,表示以它开始的当前行是注释内容;另一种是多行注释,使用一对“界定符”(/* 和 */),在它们之间的所有内容都是注释。
#include<iostream>
/*
* 主函数
* Hello World
*/
int main()
{
// 输出一行信息
std::cout << "Hello World!" << std::endl;
return 0;
}
5. 代码改进
我们之前写的代码非常简单,实现了输出Hello World的功能。不过输出显示用的是“调试控制台”,运行完成总会显示一行额外信息,此时,我们只要更改一下VS的设置。要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。不过出现了新的问题:,当再次运行的时候,窗口一闪而过,根本看不清输出了什么。为了查看输出结果,我们还是希望把窗口保持住、不要直接退出,这可以通过在main()函数中增加一句输入语句来实现:
int main()
{
// 输出一行信息
std::cout << "Hello World!" << std::endl;
// 等待键盘输入
std::cin.get();
return 0;
}
这里的cin跟cout刚好相反,它是一个输入流对象。调用它内部的函数get(),就可以读取键盘的输入;等待键盘输入的时候,窗口就会一直开着。这里的键盘输入是以回车作为结束标志的,所以运行看到结果之后,直接敲回车就可以退出了。此时的运行结果如图: