test1.c (第一个源文件)
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
C语言提供的关键字,不能自己创建关键字
关键字不能是变量字
下面是C语言常见关键字:
1.auto : 是自动的,每个局部变量都是auto修饰的 2.char:是字符类型 3.const:常变量
4.extern: 是用来声明外部符号的 5.register: 寄存器关键字 6.signed:有符号的,unsigned,无符号的
7.static:静态的 8.union 联合体(共用体) 9.void:无的,空的 10.typedef:类型重定义
include define:是预处理指令
在计算机里,数据可以存放的地方有:寄存器,高速缓存,内存,硬盘,网盘
1.auto演示:
int main()
{
int a = 10; //自动创建,自动销毁的 - 自动变量
//auto int a = 10 ,auto是省略的
//新的C语音auto也有其他语法,暂时不考虑
return 0;
}
//2.register演示:
int main()
{
register int num = 100; //建议num的值存放在寄存器里
return 0;
}
//3.typedef演示:
typedef unsigned int u_int;
int main()
{
unsigned int num = 100;
u_int num = 100;
return 0;
}
4.static:
static-静态的(从栈区变到静态区)
static修饰全局变量,改变了局部变量的生命周期(本质上是改变了变量的存储类型)
static修饰局部变量,使得这个全局变量只能在自己所在的源文件内部可以使用,其它源文件不能使用!!
static修饰函数,使得函数只能在自己所在的源文件内部使用,不能在其他源文件内部使用!!
本质上是将函数的外部链接属性,变成的内部链接属性(和static修饰的全局变量一样)
全局变量,在其它源文件内部可以被使用,是因为全局变量具有外部链接属性,但是被static修饰后,
就变成了内部链接属性,其他源文件就不能链接到这个静态的源文件了!!1
①static修饰的局部变量的显示:
void test()
{
static int a = 1; //statio修饰的a不销毁 //内存分为几个区:
a++; //栈区:局部变量,函数的参数
printf("%d ", a); //堆区:动态内存分配的!!
} //静态区:全局变量,static修饰的静态变量
int main()
{
int i = 0;
while (i < 10)
{
test();
i++;
}
return 0;
}
②static修饰的全局变量演示:
extern int g_val;
int main()
{
printf("%d\n", g_val);
return 0;
}
③static修饰的函数演示;
static extern int Add(int, int);
int main()
{
int a = 10;
int b = 20;
int sum = Add(a, b);
printf("%d\n", sum);
return 0;
}
test2.c(第二个源文件)
#define _CRT_SECURE_NO_WARNINGS 1
//②全局变量演示
static int g_val = 2022;
//③函数演示
int Add(int x, int y)
{
return x + y;
}