前言
计算机,喜欢分而治之的事情,会把程序拆分成很多部分,专门的输入,专门的输出,专门的数据处理,彼此相互独立,最后又把把他们链接起来构成完整的程序;也喜欢把函数封装好,直接放到主函数用,无需在主函数中写函数体,而函数多了,我们又喜欢把函数单独放在一块,主函数单独一个文件,这实际上,用到的就是项目。
做法
总体框架:
先来说说总体框架,我们一共需要三个文件,一个是头文件,另两个是.c或者.cpp文件,这里以.cpp为例
1.主函数
用到一个.c或者.cpp文件,这里以.cpp为例
对于主函数,我们仅仅用这一行代码,例如以下所描述的
#include "swap.h"
来告诉程序:"我引用了一个头文件,里面包含有swap函数,等会我在主函数中写swap的时候,你可别给我报错,说不认得这个swap,我是真的写了的,你沿着头文件去找swap函数,他会教你怎么做"。
然后,我们写下主函数
#include <iostream>
using namespace std;
#include "swap.h"
int main(){
int a = 10;
int b = 20;
cout << a << " " << b << endl;
swap(a,b);
return 0;
}
2.头文件
用到一个.h文件
对于头文件swap.h,我们只做函数原型声明这一件事,即
void swap(int a,int b);
头文件swap.h,可以说是一个合同,一个协议,来告知程序:"我把函数的类型,参数的类型都告诉你了,你在主函数中用swap函数的时候,我们约定好,你主程序用到这些参数时数据类型不要用错,不然我就报错"
3.引用的函数
用到一个.c或.cpp文件,这里以.cpp为例
在这个文件中,我们写下函数体,来告诉程序,swap这个函数具体的操作步骤
#include "swap.h"
#include <iostream>
using namespace std;
void swap(int a,int b)
{
int temp = a;
a = b;
b = temp;
cout << a << " " << b <<endl;
}
注意
1.仔细观察,我们这里include引用的swap.h头文件,用的是双引号,而不是尖括号。区别在于,双引号是在同一级目录下(即该项目目录下)寻找该头文件,而书名号是在编译器所给出的所有头文件中寻找,一个可以是自己创建的头文件,一个是系统给的
2.在做法第三个步骤中,细心的网友朋友们可能注意到了,写引用的函数体不就好了,为什么还要再来一个
#include <iostream>
using namespace std;
这样的一个引用呢?实际上,我们注意到引用的函数体中有cout输出这一函数,不引用上面这个头文件,程序根本不懂cout是干啥的,编译会报错。
3.这三个文件中,仅仅头文件swap.h不需要用到#include "swap.h",要是引用的话,那不就自己引用了自己,不就乱套了吗?
而其余两个文件需要用到#include "swap.h",可以说都是用来确认函数类型,参数类型是否匹配