#### 包含文件指令 ####
包含文件指令#include,可用来包含一个文件
#include <math.h>
尖括号中是所包含的文件,math.h是数学函数库的头文件,将该文件包含进来后,就可以使用一些数学函数了
#include <stdio.h>
#include <math.h>
int main()
{
double x=pow(2,3);
printf("2的3次方是%.0f\n",x);
return 0;
}
#### 包文件的方式 ####
- 一般来说,有2种方式
- #include <stdio.h> 尖括号将文件名stdio.h括起来,将通知预处理器在编译器自带的头文件中搜索文件名stido.h
- #include "stdio.h" 双引号将文件名stdio.h括起来,将通知预处理器在当前程序的文件夹下搜索该文件,如果搜索不到,再去编译器自带的头文件中进行搜索
#### 头文件 ####
**#include指令可包含任何文件,但通常包含的是头文件,头文件是以.h为后缀的一般是函数原型和宏的定义,有时也可以放置结构体类型的声明和静态全局变量的定义**
以下为book.h中的内容,代码如下:
#include <string.h>
#include <stdio.h>
#define P printf
#define PA printf("\n%-12s%-12s\n\n","ÊéÃû","¼Û¸ñ")
#define PB "%-12s%-12.2f\n"
static int n;
struct Book
{
char name[10];
double price;
};
void Set(struct Book my[],int n);
void Show(struct Book my[]);
**book.h这个头文件中有宏的定义(第3-5行)、函数原型(第12-13行)、结构体类型的声明(第7-11行)、静态全局变量的定义(第6行),以及其他头文件的包含(第1-2行)**
**注意:头文件中不可以定义全局变量和函数,但是可以定义静态全局变量。头文件只能声明全局变量,不可以定义它,一般在头文件中用extern来声明全局变量,而在源文件中定义它。如果在头文件中定义全局变量,则这个头文件被多个源文件引用的话,会造成全局变量被重复定义的链接错误,但是如果定义的是静态全局变量,则不会出现这个问题**
头文件是一种包含了函数声明和数据类型声明的载体文件,主要用于保存程序的声明,而定义文件则用于保存程序的实现,定义文件以.c为后缀,book.h所对应的定义文件book.c中内容如以下代码所示:
#include "book.h"
void Set(struct Book my[],int num)
{
int i;
char ch;
for (i=0;i<num;i++)
{
printf("请输入书名:");
scanf("%s",&my[i].name);
printf("请输入价格:");
scanf("%lf",&my[i].price);
getchar();
n++;
printf("是否继续输入?(Y/N):");
scanf("%c",&ch);
getchar();
if (ch=='n'||ch=='N')
break;
}
}
void Show(struct Book my[])
{
int i;
PA;
for (i=0;i<n;i++)
{
P(PB,my[i].name,my[i].price);
}
}
- 前言
- JNI基础知识
- C语言知识点总结
- ①基本语法
- ②数据类型
- 枚举类型
- 自定义类型(类型定义)
- ③格式化输入输出
- printf函数
- scanf函数
- 编程规范
- ④变量和常量
- 局部变量和外部变量
- ⑤类型转换
- ⑥运算符
- ⑦结构语句
- 1、分支结构(选择语句)
- 2、循环结构
- 退出循环
- break语句
- continue语句
- goto语句
- ⑧函数
- 函数的定义和调用
- 参数
- 函数的返回值
- 递归函数
- 零起点学通C语言摘要
- 内部函数和外部函数
- 变量存储类别
- ⑨数组
- 指针
- 结构体
- 联合体(共用体)
- 预处理器
- 预处理器的工作原理
- 预处理指令
- 宏定义
- 简单的宏
- 带参数的宏
- 预定义宏
- 文件包含
- 条件编译
- 内存中的数据
- C语言读文件和写文件
- JNI知识点总结
- 前情回顾
- JNI规范
- jni开发
- jni开发中常见的错误
- JNI实战演练
- C++(CPP)在Android开发中的应用
- 掘金网友总结的音视频开发知识
- 音视频学习一、C 语言入门
- 1.程序结构
- 2. 基本语法
- 3. 数据类型
- 4. 变量
- 5. 常量
- 6. 存储类型关键字
- 7. 运算符
- 8. 判断
- 9. 循环
- 10. 函数
- 11. 作用域规则
- 12. 数组
- 13. 枚举
- 14. 指针
- 15. 函数指针与回调函数
- 16. 字符串
- 17. 结构体
- 18. 共用体
- 19. typedef
- 20. 输入 & 输出
- 21.文件读写
- 22. 预处理器
- 23.头文件
- 24. 强制类型转换
- 25. 错误处理
- 26. 递归
- 27. 可变参数
- 28. 内存管理
- 29. 命令行参数
- 总结
- 音视频学习二 、C++ 语言入门
- 1. 基本语法
- 2. C++ 关键字
- 3. 数据类型
- 4. 变量类型
- 5. 变量作用域
- 6. 常量
- 7. 修饰符类型
- 8. 存储类
- 9. 运算符
- 10. 循环
- 11. 判断
- 12. 函数
- 13. 数学运算
- 14. 数组
- 15. 字符串
- 16. 指针
- 17. 引用
- 18. 日期 & 时间
- 19. 输入输出
- 20. 数据结构
- 21. 类 & 对象
- 22. 继承
- 23. 重载运算符和重载函数
- 24. 多态
- 25. 数据封装
- 26. 接口(抽象类)
- 27. 文件和流
- 28. 异常处理
- 29. 动态内存
- 30. 命名空间
- 31. 预处理器
- 32. 多线程
- 总结
- 音视频学习 (三) JNI 从入门到掌握
- 音视频学习 (四) 交叉编译动态库、静态库的入门学习
- 音视频学习 (五) Shell 脚本入门
- 音视频学习 (六) 一键编译 32/64 位 FFmpeg 4.2.2
- 音视频学习 (七) 掌握音频基础知识并使用 AudioTrack、OpenSL ES 渲染 PCM 数据
- 音视频学习 (八) 掌握视频基础知识并使用 OpenGL ES 2.0 渲染 YUV 数据
- 音视频学习 (九) 从 0 ~ 1 开发一款 Android 端播放器(支持多协议网络拉流/本地文件)
- 音视频学习 (十) 基于 Nginx 搭建(rtmp、http)直播服务器
- 音视频学习 (十一) Android 端实现 rtmp 推流
- 音视频学习 (十二) 基于 FFmpeg + OpenSLES 实现音频万能播放器
- 音视频学习 (十三) Android 中通过 FFmpeg 命令对音视频编辑处理(已开源)