前言
学习编程的入门第一课通常会以Hello world
开始,在本章我们同样从Hello world
开始;在学习之前我们先安装好一个趁手的代码编辑器IDLE
,在这里推荐三款不同的编辑器,分别是:Dev-C++、Code Blocks、Visual Studio
,建议初学者不要使用Visual Studio
;如果需要安装包可以去官网下载
或者在公众号点击联系方式添加我的微信
。
正文
看我公众号的一部分同学之前有进行过Python
的学习,那么这部分同学一定要注意两者之间编写方法的不同,不要搞混乱了,举一个例子:在Python
中的缩进是代码规范,必须按照要求;而在C++
中的缩进只是为了好看而已,可有可无。除此之外还有很多不同的地方,同学们认真学习,慢慢的了解吧。在这里也提示一句:“学习程序设计最好的方法就是------编写程序”。
话不多说,我们先看一段程序代码,该程序可以在控制台打印语句:
#include<bits/stdc++.h> //导入头文件
using namespace std; //使用命名空间std
int main(){ //主函数
cout<<"小九";
cout<<"爱学习"<<endl;
cout<<"Hello world"; //在控制台打印Hello world
return 0; //返回值0
}
执行结果:
小九爱学习
Hello world
--------------------------------
Process exited after 0.03761 seconds with return value 0
请按任意键继续. . .
和Python
不同的地方是C++
将//
称为注释,在C++
的编译器中会自动忽略//
后面的内容不去运行,因此注释对于程序整体的性能并不会有任何影响;同样也建议初学者养成一个写注释的好习惯。
代码解析:
#include<bits/stdc++.h> //导入头文件
在尖括号中的bits/stdc++.h
是C++
中的一个头文件,头文件中封装了一些功能,使得其他程序能够调用;程序会通过#include
指令进行导入头文件,通常我们会将所有需要使用的头文件在程序开始的位置进行导入。(同学们可以将头文件理解为Python
中的第三方工具库,#include
指令可以理解为import
关键字。)
C++语言包含了很多的头文件,每一个头文件中都封装了一些功能,在编写程序的时候需要使用什么功能就可以使用#include
指令将对应的头文件进行导入即可;就如同上面的程序代码,我们需要的是输出功能,那么我们就可以导入iostream
头文件来编写程序,该头文件是C++
的标准输入输出库。
#include<iostream> //导入头文件
using namespace std; //使用命名空间std
int main(){ //主函数
cout<<"小九";
cout<<"爱学习"<<endl;
cout<<"Hello world"; //在控制台打印Hello world
return 0; //返回值0
}
执行结果:
小九爱学习
Hello world
--------------------------------
Process exited after 0.03934 seconds with return value 0
请按任意键继续. . .
为什么导入bits/stdc++.h
这个头文件也可以进行输出,这是因为头文件bits/stdc++.h
被称为万能头文件,该头文件中封装了C++
标准库中几乎所有的头文件,因此当我们导入这个头文件的时候相当于将所有的头文件全部导入了,当然也包含了iostream
头文件。
但是万能头也不是在所有的编译器中都可以使用的,比如上面说的编译器Visual Studio
就不允许使用,当然各位同学主要还是参加全国青少年信息学奥林匹克竞赛的,在该竞赛中的编译器中是允许使用万能头的,所以同学们可以将万能头记住,同样其他的常用头文件也需要进行记忆;另外在工程项目中也不要使用万能头,因为工程项目中存在大量的程序文件很容易导致函数和变量的命名和标准库中的命名出现冲突,还有就是万能头会降低工程项目的编译效率,从而增加编译时间,这种情况是不会被允许的。
using namespace std; //使用命名空间std
该语句表示使用命名空间std
,主要的一个作用就是为了防止程序中的名字和标准库中的名字出现冲突而提供的一种可控机制,C++
中引用namespace
关键字解决命名冲突的一个主要原因就是C语言
中没有很好的解决命名冲突的问题;在C++
标准库中所有的标识符(也就是变量、函数的名称)都被定义在一个名为std
的命名空间(namespace
)中,然后下面程序中如果用到和stl(标准模板库)
中同样名字的,那么就是用的stl(标准模板库)
中的函数。
如果在程序中不使用命名空间我们就没有办法直接使用标识符,如下:
#include<iostream> //导入头文件
int main(){ //主函数
cout<<"小九";
cout<<"爱学习"<<endl;
cout<<"Hello world"; //在控制台打印Hello world
return 0; //返回值0
}
执行结果:
E:\C++_Dve_Projects\NO_01.cpp In function 'int main()':
5 2 E:\C++_Dve_Projects\NO_01.cpp [Error] 'cout' was not declared in this scope
5 2 E:\C++_Dve_Projects\NO_01.cpp [Note] suggested alternative:
1 0 E:\C++_Dve_Projects\NO_01.cpp In file included from E:\C++_Dve_Projects\NO_01.cpp
61 18 D:\C++\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\c++\iostream [Note] 'std::cout'
6 18 E:\C++_Dve_Projects\NO_01.cpp [Error] 'endl' was not declared in this scope
6 18 E:\C++_Dve_Projects\NO_01.cpp [Note] suggested alternative:
39 0 D:\C++\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\c++\iostream In file included from D:/C++/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++/iostream
1 E:\C++_Dve_Projects\NO_01.cpp from E:\C++_Dve_Projects\NO_01.cpp
564 5 D:\C++\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\c++\ostream [Note] 'std::endl'
解决方案:(在每一个标识符前加上std::
,和Python
中我们使用第三方工具库调用其中的函数有点类似)
#include<iostream> //导入头文件
int main(){ //主函数
std::cout<<"小九";
std::cout<<"爱学习"<<std::endl;
std::cout<<"Hello world"; //在控制台打印Hello world
return 0; //返回值0
}
执行结果:
小九爱学习
Hello world
--------------------------------
Process exited after 0.03876 seconds with return value 0
请按任意键继续. . .
int main(){} //主函数
该语句是一个主函数,每一个C++
程序中都包含了一个或多个函数,其中必须有一个并且也只能有一个命名为main
的函数,这个函数也就是主函数,它是整个程序的入口,操作系统会通过调用main
函数来编译运行整个程序,和Python
不同的是:C++
的语句块必须写在{}
中,缩进可有可无,并且每条语句后必须加上;(分号)
表示逻辑实体的结束。
cout<<"小九";
cout<<"爱学习"<<endl;
cout<<"Hello world"; //在控制台打印Hello world
这些语句是打印的语句块,可以在控制台打印出指定的内容,cout
是C++
标准库中的输出流,在进行输出的时候必须结合<<
一起使用,另外endl
是C++
标准库中的操控器,在这里的作用是换行,或者一行输出结束,然后输出下一行;所以在打印小九
的时候并没有换行,接着打印爱学习
,然后换行打印Hello world
,最终呈现的结果为:
小九爱学习
Hello world
--------------------------------
Process exited after 0.03876 seconds with return value 0
请按任意键继续. . .
return 0; //返回值0
该语句表示终止main函数的执行,返回出去一个0给操作系统,告知操作系统该C++程序成功执行完毕,所有编程语言中的return语句意思大致相同。
微信扫码关注《小九爱学习》