#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//常见关键字
// auto break case char const continue default do double else enum extern float for goto if long int register return short signed sizeof static struct switch typedef union unsigned void volatile while
//特点
// 1.C语言提供的,不能自己创建关键字
// 2.关键字不能做变量名
// auto 自动的 ,每个局部变量都是自动的,自动创建自动销毁,一般前面的auto都省略掉了,新的C语言语法中也有其他用法,暂时先不考虑。
// register 寄存器关键字,如:register int num = 10,建议 把num的值放入寄存器,大量频繁被使用的数据,放在寄存器中,提高效率
// 计算机的数据可以存到寄存器,高数缓存,内存,硬盘,网盘里面,越往右边存储空间越来越大,但是传输速度却是越来越小
//signed 有符号的
// unsigned 无符号的
// extern 声明外部符号的,比如想用相同文件夹中不同的源文件中的数据,就可以声明一下,如:extern int a;函数也可以被调用,需要声明原本的函数名,函数类型,参数类型。
// static 静态的
// 1.static修饰局部变量,改变了局部变量的生命周期(本质上改变了变量的存储类型)
// 变量的存储类型有 栈区,堆区,静态区,(局部变量,函数的参数放在栈区)(堆区是用来动态内存分配的)(像全局变量和static修饰的静态变量放在静态区)
void text()
{
static int a = 1;// 原本是进这个范围创建,出这个范围销毁,被static修饰之后,生命周期变长了,就是第一次循环进来的时候赋予a++的值2,并没有销毁,再循环当然也不会销毁,只走a++
a++;
printf("%d\n", a);
}
int main()
{
int i = 0;
while (i < 10)
{
text();
i++;
}
return 0;
}
// 2.static修饰全局变量
// static修饰的全局变量,使得这个全局变量只能在自己所在的源文件(.c)内部可以使用,其它源文件不能使用!全局变量,在其他源文件内部可以被使用,是因为全局变量具有外部链接属性(可以用extern声明一下,并调用),但是被static修饰之后,就变成了内部链接属性,所以其它源文件就不能链接到这个静态的全局变量了。
// 3.static修饰函数
// static修饰函数,使得函数只能在函数所在的源文件内部使用,不能在其他源文件内部使用,本质上static是将函数的外部链接属性变成了内部链接属性(和static修饰的全局变量是一样的)。
// union 联合体(共用体)
// void 无—空
// typedef 类型重定义
// typedef可以给比较长的的关键字重命名,更简便更好写,比如:
typedef unsigned int u_int;// 给unsigned int 重新命名
int main()
{
unsigned int num = 100;
u_int num2 = 100;// 这两个式子效果是一样的。
}
// 注意:define include 不是关键字,是预处理指令
//