常见关键字
- C语言提供的,不能自己创建
- 变量名不能关键字
auto 、break、case、char、const(常变量)、continue、default(默认)、do、double、else、enum(枚举)、extern(是申明外部符号的)、float、for、goto、if、int、long、register(寄存器关键字)、return、short、signed(有符号的)、sizeof、static(静态的)、struct、switch、typedef(类型定义)、union(联合体、共用体)、unsigned、void(无或空)、volatile(提现C语言段位的关键字)、while
auto 自动的 —— 每个局部变量都是auto修饰
#include<stdio.h>
int main(void)
{
int a = 10; //a进了{}就创建,出了{}就销毁,自动创建自动销毁 —— 自动变量
//auto int a = 10; 里面的auto省略了
//auto 新的C语言中也有其他用法,暂时不考虑
printf("%d\n", a);
return 0;
}
register 寄存器关键字
计算机中数据可以存储到哪里呢?
可以存到 内存、硬盘、网盘、高速缓存、寄存器
CPU 中央处理器 —— 早期 数据来源于 内存,后来CPU速度越来越快,内存读取速度跟不上,就有了 高速缓存、寄存器(读取速度非常快)
#include<stdio.h>
int main(void)
{
//大量、频繁被使用的数据,想放在寄存器中,提升效率
register int a = 10; //建议将a的值存放在寄存器中
//现在的编译器已经很聪明,即使没写register,它认为该放进去还是会放进去
printf("%d\n", a);
return 0;
}
问: define、include 是不是关键字?
答:不是,它们是预处理指令。
typedef(类型定义):类型重定义,可以把复杂类型简单化
#include<stdio.h>
typedef unsigned int u_int;
int main(void)
{
unsigned int num1 = 100; //如果不想每次写这么长,可用typedef 把 unsigned int 重新定义为 u_int
u_int num = 120; //跟上一行代码意思一样
printf("%d\n", num);
return 0;
}
static 静态的
- 修饰局部变量
- 修饰全局变量
- 修饰函数
static 修饰局部变量 —— 改变了局部变量的生命周期(本质上是改变了额变量的存储类型)
举例:
static 修饰全局变量,使得这个全局变量只能在自己所在的源文件(.c)内部可以使用,其他源文件不能使用!
全局变量,在其他源文件内部可以被使用,是因为全局变量具有外部链接属性,但是被static修饰之后,就变成了内部链接属性,其他源文件就不能链接到这个静态的全局变量了。
举例:
static 修饰函数,使得函数只能在自己所在的源文件内部使用,不能在其他源文件内部使用,本质上:static 是将函数的外部链接属性变成了内部链接属性!(和static修饰全局变量一样!)
举例: