什么是头文件
我们一直在用, 只是我们不知道那是头文件
c
#include <stdio.h>
int main() {
// 是否好奇, 为什么直接能够使用这个函数
// 那是因为引入了 stdio 这个头文件
// 在这个头文件中, 定义了这个函数
printf("hello world \n");
}
头文件有什么用
头文件分为标准库(安装好编译器自带的)头文件和自定义头文件
- 标准库头文件提供了很多有用的功能函数, 比如
string.h
中有一个strlen
函数 - 自定义头文件, 可以让 C 和其他编程语言一样, 导入其他文件中代码的功能
自定义头文件
头文件是以 .h
结尾的文件
- 创建
tools.h
和tools.c
两个文件 - 在
main.c
中导入tools.h
- 编译运行, 注意编译时不需要包含头文件, 但需要包含.c的实现文件
sh
gcc ./main.c ./tools.c -o ./main
c
#include "tools.h" // 导入自定义头文件用 "xxx.h"
#include <stdio.h> // 导入标准库头文件用 <xxx.h>
int main() {
print_newlins(3);
int nums[] = {1, 3, 5, 7, 9};
int avg = meanof(nums, 5);
printf("mean of nums: %d\n", avg);
print_newlins(3);
}
c
// 头文件只是定义有哪些东西, 但并不实现(类似于接口的功能)
// 输出换行
void print_newlins(unsigned int lines);
// 计算数组平均值
// nums: 数组指针
// count: 数字个数
int meanof(int nums[], unsigned int count);
c
// 真正的实现还是在c文件中实现的(类似于实现接口 implements)
// 注意在这个实现文件中需要 #include 头文件
#include "tools.h"
void print_newlins(unsigned int lines) {
for (unsigned int i = 0; i < lines; i++) {
printf("\n");
}
}
int meanof(int nums[], unsigned int count) {
int sum = 0;
for (int i = 0; i < count; i++) {
sum += nums[i];
}
return sum / count;
}