C++程序简单示例
前言:
很多小伙伴反应想要用c++
刷leetcode
,但是对于c++语法不熟悉,对于很多算法和数据结构也不够了解。这就导致了刷题的时候需要四处查询资料,非常的麻烦。
我们先来看一段c++的示例代码:
// my first cpp file #include <iostream> int main() { using namespace std; cout << "hellworld" << endl; return 0; }
这段代码虽然很短,但几个重要的要素都包含了,如果只是用来刷题,会发现基本上也只会用到这些语法。
我们一行一行来看。
1、注释
首先是第一行,第一行表示的c++当中的注释。c语言当中的/**/的多行注释方法同样支持,但为了避免潜在的问题,尽量使用c++类型的注释。
2、include
第二行是预编译指令include
,这里的预编译指令是一个专业名词,表示在编译之前预先执行的指令。c++当中的预编译指令有好几种,除了include
之外还有define
、ifdef
、undef
等等,我们后面遇到了再说。
include
这个指令会引入一个源代码文件,后面跟着的是一个包含文件名,也叫头文件名。c语言中的头文件以.h结尾,而c++当中兼容了c语言的头文件,只不过将其重新命名,去掉了末尾的.h,而换成了c开头。比如math.h
文件替换成了cmath
。
在这行代码当中我们include
的头文件叫做iostream
,iostream
为c++的标准输入输出库,用来在终端读入或者打印文本信息。iostream
可以拆开理解成io
和stream
,其中io表示input
、output
即输入输出,stream
表示流,即使用流形式进行io。
3、main函数
main
函数是c++程序的入口函数,c++标准当中定义的main
函数类型是int。返回0表示程序正常退出,所以一般我们要在main函数的最后写上return 0
。
c++的main函数通常有两种写法,一种是参数留空,一种是定义参数数量以及参数值。
int main() {} int main(int argc, char* argv[]) {}
关于main
函数的传参方法,以及参数使用方法同样会在之后介绍,初学者随便使用哪一种都是一样的。
注意,有些编译器比如vc6.0等没有严格遵循gcc
规范,导致支持void
类型的main
函数。建议放弃此类不规范的编译器,以免代码无法迁移,并且养成不好的编码习惯。
4、命名空间
命名空间是c++当中的特性,用来解决大型项目名称冲突的问题。
有可能多个程序员同时开发了getvalue
函数,但当我们编译运行的时候,编译器无法知道我们究竟调用的是哪一个getvalue,所以需要使用命名空间进行区分。比如a程序员将getvalue
放入了名为a的命名空间当中,那么当我们调用getvalue的时候就需要写成a::getvalue
,b程序员将它放入了名为b的命名空间中,同样调用的时候写成b::getvalue
。
然而常用的许多函数、变量都明明在std的命名空间当中,这就意味着当我们使用这类内容的时候,都需要在前面加上std::,比如标准输出的cout
命令,需要写成std::cout
。
这会导致编码变得繁琐,所以c++提供了using namespace
的功能,即告诉编译器当前使用的命名空间名称,这样我们在调用该命名空间的内容时,可以省略前缀。
除了using namespace之外我们也可以单独使用using命令,例如:
using std::cout; using std::cin;
5、cout
标准输出工具,可以将字符串输出在终端中。
cout
本身是一个预定义的对象,它知道如何显示字符串、数字和单个字符。<<符号表示将字符串发送给cout
,由cout
输出在屏幕当中。<<符号表示了信息流动的路径,<<符号可以多个叠加连接,
比如:
cout << "hello" << "world";
endl表示当前输出行的结束,cout
遇到endl
时会重启一行,否则则会接在同一行后面继续输出。
除了使用endl之外,我们也可以使用换行符来达到同样的效果,如:
cout << "hello" << "world\n";
c++ primer
当中建议在输出由内容的字符串时使用换行符,而非endl
,其他情况下使用endl
,而非换行符。这两者绝大多数情况下是等价的,在一些特殊情况下可能会构成差异。
如endl
确保程序继续运行前刷新输出,而使用"\n"则意味着有时候需要在输入信息之后才会出现提示。当然这不是重点,我们遇到的概率也非常小,如果实在搞不清楚也不用纠结,统一使用endl
也行。
到此这篇关于c++程序简单示例的文章就介绍到这了,更多相关c++程序示例内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
上一篇: Java 异步线程监听与结果回调及异常捕获总结分析
下一篇: 解析C++多文件编程问题