1、预处理编译指令#include
首先来谈谈头文件,也就是我们经常看到的:#include <filename>
,这叫做预处理器编译指令。在实践开发中,往往需要将很多文件组织起来,其中就包括预处理指令编译的方式。通俗的说,就是我们要在某段程序中使用一个其他源文件中的函数,那么我们可以将该源文件函数的声明写在对应的头文件里面,然后在当前程序段前面include
这个头文件,即可使用头文件里面声明的函数。我们在include
标准头文件的时候,使用的是<>
,而对于自己创建的头文件,则使用“”
。
2、程序主体main()
main()
函数是程序的入口,和其他函数不一样,main函数的返回值是无关紧要的,因此常常常常这样写:
int main(){
//...
return 0;
}
有时我们需要在可执行文件后面添加参数,这是我们需要在main()
括号里面写两个参数:
int main(int argc, char **argv){
//...
return 0;
}
其中argc
是可执行文件参数的个数,argv
是参数数组。需要说明的是argv[0]是可执行文件本身, 其后才是跟在可执行文件后面的其它参数。具体来说,假如有一下可执行指令:
./exe a b c
对应的:
argc = 4;
argv[0] = exe;
argv[1] = a;
argv[2] = b;
argv[3] = c;
3、main
程序的返回值
对于main
程序来说,其返回值对程序本身没有意义,但往往可以在不同的地方return不同的值,这相当于用于判别程序错误类型的标志,常见的return 0;
是程序正常退出的标志,return -1;
则表示异常退出。
4、命名空间
C++中最常见的命名空间应该是std
,即standard
(用来获取ISO标准委员会批准的函数、流和工具)
std
中包含cout
函数,用法为std::cout
,使用using namespace std
;即可避免添加限定符std
。如果有两个函数同名,且在不同的命名空间中,那么就必须添加这个限定符。
5、注释
注释就很简单了,有两种方法:
- 单行注释:
//注释内容
- 多行注释:
/*注释内容
...
注释内容*/
既然这么简单,有什么好说的呢,其实注释尤其重要,注释是项目编写的重要组成部分,虽然不参与编译,但对合作开发是非常有必要的,同时也能提醒自己片段代码的的功能。例如一个简单的注释如下:
/* function return the value of a+b
* input (double) a, b
* output (double) result
*/
double add(double a, double b)
{
return a+b;
}
这是一个简单的加法函数注释,包含了功能、输入、输出等信息。当一个函数篇幅很长时,这样的注释会大大增加代码可读性。
6、函数
简单地来说,函数可分为两种类型:有返回值、没有返回值。有返回值的函数往往是对一个算法的封装,即根据输入得到算法结果;没有返回值的函数一般用来修改参数值的,常常通过引用和指针来实现。比如上面的add函数就是一个有返回值的函数,下面的swap
函数则是一个不带返回值的函数:
void swap(double &a, double &b)
{
double a_temp;
a_temp = a;
a = b;
b = a_temp;
}