Hello World示例代码:
#include<iostream>
int main()
{
std::cout << "Hello World" << std::endl;
}
代码解析
第一行的#号,代表这一条是预处理指令,意思就是在这个程序之前,要先处理这条命令,include是引入,随之是一个头文件(支持库)
主函数 main()
所谓的函数,就是包装好的一系列要执行的操作,可以返回一个结果。一个C++程序可以包含很多函数,其中一个必须叫做main,它是执行程序的入口。
前面的int表示的是这个函数可以返回一个值。返回的数据类型是整数型,后面紧跟着的就是函数的名称,紧接着后面的小括号内是在执行这个函数时传递的参数
main() 的定义形式如下:
int main()
{
statements
return 0;
}
最后可以返回一个值,这个值的数据类型需要与函数名前的数据类型一样
在主函数main中,可以不写返回值,默认的就是返回0
语句
函数体里,每一步操作都是一个“语句”(statement),用分号结尾。我们这里的语句,执行的就是输出Hello World的操作。
这是一个“表达式”。所谓表达式,一般由多个运算的对象和运算符组成,执行运算之后会得到一个计算结果。
在这里,两个连在一起的小于号“<<”就是一个用来输出的运算符。它的使用规则是:左边需要一个“输出流”的对象,也就是输出到哪里;右边是要输出的内容,最简单的就是一个“字符串”,需要用双引号引起来。
所以 std::cout << "Hello World!" 的意思就是:将“Hello World!”这串信息,输出到cout这个对象。cout就是一个输出流对象,iostream库里定义了它的功能,接收到信息之后就可以输出显示了。
简单理解这条语句就是将右侧的内容输出到左侧,依次顺序就是将换行符输出到Hello World,然后再输出到左侧的cout对象,这个endl是一个“操作符”,表示结束一行,并把缓冲区的内容都刷到输出设备。
而cout前面的std是所谓的“命名空间”(namespace),主要是为了避免还有别的cout对象重名起冲突。这里的双冒号“::”也是一个运算符,叫做作用域运算符,专门指明了我们用的cout是标准库std中的。
如果不想总用双冒号,也可以在引入库后直接加上一句:
using namespace std;
注释
跟html的语句一样,以//开头单行注释,多行注释/
编译
我们之前写好C++代码之后,是直接在Visual Studio里借助“本地windows调试器”运行的;而如果真正开发一个软件,显然不能总是依赖VS的调试器运行。真正应用中,我们最终要得到一个“可执行文件”,一般以.exe作为扩展名,双击就可以运行程序了。
怎样转换得到可执行文件呢?之前已经提到,C++是一种编译型语言,在运行之前需要进行编译和链接。我们现在就用上节写好的Hello World代码,把这个过程具体说明一下。
打开资源管理器,可以看到我们项目的所有文件,其中Hello World.cpp文件就是我们的源代码,其他的则是visual studio生成的文件,另外还有一个x64文件夹,是之前我们在本地进行调试运行时生成的,里面有一个Debug子文件夹,保存了调试运行的相关信息和日志。
在VS中,可以看到目前就是处于debug的调试模式,针对的就是X64平台
在X64/debug的目录下,有一个.obj类型的文件,这个文件就是下面编译要用到的目标代码
源代码首先需要编译(compile),得到目标代码。编译器当然是由Visual Studio提供的。我们首先点击一下源代码文件,然后在VS的菜单栏中选择“生成”-> “编译”(快捷键Ctrl+F7),就可以进行编译了。在下方的“输出”窗口内,可以看到编译的结果信息。
编译不是编译整个项目,而是相对一个源代码而言,在项目资源管理器中,右击项目是不会有编译选项的,要右击源文件,将源文件编译出来,得到目标代码文件(obj文件)
到这里,我们还未得到可以直接执行的文件,因为编译只是编译了我们写的代码,而我们代码里面,有引用到iostream的库,要将这个库也链接到我们的代码中。
直接在资源管理器中,右击我们的项目,有一个生成的选项,这个就是生成我们的exe可执行文件,会将我们引用的库与我们的代码做链接,打包在一起,成为一个可执行文件
生成完成后,可以在下面输出框看到我们生成的文件在哪里。该文件因为已经打包好所有依赖的的库,所以我们剪切到其他地方,依然可以正常运行
参考文件:
C++课程文档(基础篇)
参考视频
【尚硅谷C++教程,第6P】
暂无评论内容