#include预编译命令
#include <> 是系统目录中找头文件。(优先系统目录)
#include " " 是首先在当前目录查找头文件,如果找不到,再去系统目录查找。(优先当前目录)
文件包含可以嵌套。一个头文件里可以#include多个其他头文件。
函数的跨文件使用
函数定义
写在main函数之后的函数,要在main函数之前声明才能正常使用
void add(int a, int b); //函数声明
int main()
{
void add();
}
void add(int a, int b)
{
return a + b;
}
内部函数(静态函数)、static关键字
内部函数只能被本文件中其他函数调用。
1、函数内部定义一个变量时,则改变量会保存在静态储存区,整个程序运行期间不释放内存,在编译时被初始化为0,并且调用该函数时,该变量保持上次离开时的值。
#include <stdio.h>
int max(int p1, int p2)
{
static int a; //初始化为 a = 0
++a;
printf("%d\n", a);
if (p1 > p2)
return p1;
return p2;
}
int main()
{
int b = 3;
int c = 4;
max(4, 5); // a = 1
max(c, b); // a = 2
}
2、在全局变量之前增加static,会导致变量变成局部静态变量,如果不赋初值,则在编译时被初始化为0,只能被本文件引用,无法在其他文件中引用。
static int k;
int main()
{
printf("%d\n", k); // k = 0
k++;
printf("%d\n", k); // k = 1
}
3、在函数定义之前增加static,那么该函数只能在本文件中调用,而不能在其他文件中调用。
static int max(int p1, int p2)
{
static int a;
++a;
printf("%d\n", a);
if (p1 > p2)
return p1;
return p2;
}
外部函数、extern关键字
extern对外部的全局变量做出声明
函数定义时,不加static关键字,就相当于是外部函数,不写默认有extern
宏定义
不带参数的宏定义,用 PI 代替"3.14159265"这个字符串
#define PI 3.14159265 // #define 标识符/宏名 字符串
宏名 一般都用大写字母,且 宏定义不加分号
理解项目运行