(c++)函数的分文件编写
1、在头文件文件夹中创建.h的头文件(如:_func.h),用于存放函数的声明。注意头文件里面也要声明#include<iostream> using namespace std;因为等会你编写的函数要用这两个东西
2、在源文件里面创建一个.cpp文件来写函数的定义,也就是函数的具体是实现,但是要将函数的具体实现和“1、”里面的函数声明联系起来,需要在这个.cpp文件中包含头文件#include"_func.h"
到这里函数文件就写完了
3、如果需要在main函数里面调用自己写的函数,需要在main()函数的那个cpp文件里面包含#include"_func.h" (注意这里是双引号而不是尖括号,双引号代表是自己写的头文件),相当于告诉编译器我用的函数在这里面,然后就可以正常调用自己写的函数了。
如图:_func.h放的是函数声明,_func.cpp放的是函数实现,_20240915.cpp里面是main()函数
以下是_func.h文件中的内容
#include<iostream>
using namespace std;
//这两个固定格式要加上,因为函数内部实现需要依赖这个头文件
#include<ctime>
#include<string>
void _print_arr(int arr[], int len);//打印一个数组(数组名,数组长)
void _rand_init(int arr[], int len);//给数组随机初始化(数组名,数组长)
void _bubble_sort(int a[], int len);//冒泡排序(数组名,数组长)
void _swap(int* a, int* b);//交换两个数(&a,&b)即参数为两个变量的地址
以下是_func.cpp中的内容
#include"_func.h"//包含这个“自编写”的头文件,让两个文件产生关联
void _print_arr(int arr[], int len)//打印数组函数,(输入数组名,数组长度)
{
for (int i = 0; i < len; i++)
{
cout << arr[i] << "\t";
}
cout << endl;
}
void _rand_init(int arr[], int len)//用随机数来初始化这个数组,(输入数组名,数组长度)
{
for (int i = 0; i < len; i++)
{
arr[i] = rand() % 100 + 1;
}
}
#include"_func.h"//包含这个“自编写”的头文件,让两个文件产生关联
void _print_arr(int arr[], int len)//打印数组函数,(输入数组名,数组长度)
{
for (int i = 0; i < len; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
void _rand_init(int arr[], int len)//用随机数来初始化这个数组,(输入数组名,数组长度)
{
for (int i = 0; i < len; i++)
{
//随机的范围是1-100
arr[i] = rand() % 100 + 1;
}
}
void _bubble_sort(int arr[], int len)
{
for (int i = 0; i < len - 1; i++)//如果这里将len-1换成len ,那么会多比较一轮,冒泡排序在len-1轮的时候就已经完成了
{
for (int j = 0; j < len - 1 - i; j++)//这里这个-1不能省略,如果省略了,那么会将arr[len]的值赋给arr[len-1],但是arr[len]已经不是arr数组的空间了;
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
void _swap(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
void _swap(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
main()函数的文件可以正常调用上述函数,代码如下:
#include<iostream>
#include"_func.h"//你要用自己写的函数,就需要声明一下头文件,让编译器知道你写的函数在哪里
using namespace std;
int main()
{
srand((unsigned int)time(NULL));
int arr[6];
//给数组随机初始化,然后打印看看
_rand_init(arr, 6);
cout << "初始化后的数组:";
_print_arr(arr, 6);
//冒泡排序排个序,然后打印看看
_bubble_sort(arr, 6);
cout << "排序后的数组:";
_print_arr(arr, 6);
system("pause");
return 0;
}
运行结果如图: