当前位置: 首页 > article >正文

(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;
}

运行结果如图:


http://www.kler.cn/news/308367.html

相关文章:

  • [创业之路-146] :如何理解:复杂的事情简单化,简单的事情标准化,标准的事情流程化,流程的事情数字化,数字化的事情自动化,自动化的事情智能化
  • Chisel简明教程
  • 【大模型实战篇】高质量数据过滤及一种BoostedBaggingFilter处理方法的介绍
  • JDK的选择安装和下载
  • 软考 -- 软件设计师 -- 二轮复习(3) -- 数据结构(持续更新)
  • 24.Redis实现全局唯一ID
  • 电脑信息安全:挑战与应对策略
  • PAT甲级-1055 The World‘s Richest
  • 【C++学习入门】6.左值右值
  • 软件测试方法及其应用概述
  • JZ2440开发板——S3C2440的时钟体系
  • RFID射频模块(MFRC522 STM32)
  • Linux 之父 Linus Torvalds:低调的神话创造者
  • 网络协议全景:Linux环境下的TCP/IP、UDP
  • chattr:修改文件的特殊属性
  • Linux抢占调度
  • kali——tshark的使用
  • 2024 批量下载知乎回答/文章/想法/专栏/视频/收藏夹,导出 excel 和 pdf
  • Django_Vue3_ElementUI_Release_004_使用nginx部署
  • idea插件开发的第四天-完善JSON工具
  • 算法:76.最小覆盖子串
  • 文章-深入GPU硬件架构及运行机制 学习后记
  • 撤回仓库的提交
  • 基于SpringBoot实现SpringMvc上传下载功能实现
  • uniapp 如何自定义导航栏并自适应机型
  • 【ESP32】ESP-IDF开发 | 中断矩阵+按键输入中断例程
  • 发送成绩的app或小程序推荐
  • PTrade量化服务器连接openapi的地址、key等配置涉及哪些文件?
  • 【学习笔记】SSL密码套件之哈希
  • 【目标检测】labelimg图像标注软件的使用流程