常见关键字
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 while
const 常属性
extern 声明外部符号的
enum 枚举
struct 结构体
union 联合体(共用体)
register 寄存器
srtatic 静态的
return 函数返回值
void 无(函数的返回类型,函数参数)
sizeof 计算大小
typedef 类型重命名
关键字typedef
typedef 顾名思义是类型定义,这里应该理解为类型重命名。将unsigned int 重命名为uint
关键字static
static是用来修饰变量和函数的
1.修饰局部变量
2.修饰全局变量
3.修饰函数
修饰局部变量
static修饰局部变量的时候,局部变量出了作用域,不销毁的。本质上,static修饰局部变量的时候,改变了变量的存储位置的。
影响了变量的生命周期,生命周期变长,和程序的生命周期一样。
void test()
{
int a = 1;
a++;
printf("%d ", a);
}
int main()
{
int i = 0;
while (i < 10)
{
test();
i++;
}
return 0;
}
void test()
{
static int a = 1;
a++;
printf("%d ", a);
}
int main()
{
int i = 0;
while (i < 10)
{
test();
i++;
}
return 0;
}
修饰全局变量
全局变量是具有外部链接属性的
static修饰全局变量的时候,这个全局变量的外部链接属性就变成了内部链接属性。其他源文件(.c)就不能再使用到这个全局变量了。
修饰函数
一个函数本来是具有外部链接属性的,但是被static修饰的时候,外部链接属性就变成了内部链接属性,其他源文件(.c)就无法使用了。
关键字register
register 寄存器
int main()
{
//寄存器变量
register int num = 3;//建议:3存放在寄存中
return 0;
}
#define 定义常量和宏
定义标识符常量
#define NUM 100
int main()
{
printf("%d\n",NUM);
int n = NUM;
printf("%d\n",n);
int arr[NUM] = {0};
return 0;
}
定义宏
宏是有参数的
#define ADD(x,y) ((x)+(y))
int main()
{
int a = 10;
int b = 20;
int c = ADD(a, b);
printf("%d\n", c);
return 0;
}