关键字类型
我们通常将关键字分为4个部分:数据类型关键字、控制语句关键字、存储类型关键字、其它关键字。
- 数据类型关键字:
- char 声明字符型变量或函数
- double 声明双精度变量或函数
- enum 声明枚举类型
- float 声明浮点型变量或函数
- int 声明整型变量或函数
- long 声明长整型变量或函数
- short 声明短整型变量或函数
- signed 声明有符号类型变量或函数
- struct 声明结构体变量或函数
- union 声明联合数据类型
- unsigned 声明无符号类型变量或函数
- void 声明函数无返回值,声明无类型指针
2.控制语句关键字
- for
- break
- while
- do
- continue 结束当前循环,开始下一轮循环
- if
- else
- goto 无条件跳转语句
- switch
- case
- default 开关语句中的“其他”分支
- return
3.存储类型关键字
- auto 声明自动变量 一般不使用
- extern 声明变量是在其他文件正声明(也可以看做是引用变量)
(定义只能定义一次,声明可以多次声明) - register 声明积存器变量
- static 声明静态变量或函数
4.其它关键字
- const 声明只读变量
- sizeof
- typedef 用以给数据类型取别名(当然还有其他作用)
- volatile 说明变量在程序执行中可被隐含地改变
先来重点说几个关键字:
typedef
它是类型定义,可以理解为是给类型重命名。
#include<stdio.h>
typedef unsigned int int_15;//将unsigned int重命名为int_15,int_15也是一个类型名。
int main()
{
unsigned int x = 0;
int_15 y = 0;
return 0;
}
static
在C语言中static是修饰变量和函数的
我们先来看一段代码
#include<stdio.h>
void Show()
{
int i = 0;//局部变量
i++;
printf("%d\n", i);
}
int main()
{
int i = 0;
for (; i < 10; i++)
{
Show();
}
return 0;
}
这个程序打印出来都是1,是因为当我们的for循环每一次去调用函数Show时,函数内部的变量i就会被自动创建,函数返回时又会被自动释放,这就是局部变量的特征。
#include<stdio.h>
void Show()
{
static int i = 0;//static修饰局部变量
i++;
printf("%d\n", i);
}
int main()
{
int i = 0;
for (; i < 10; i++)
{
Show();
}
return 0;
}
这里static修饰变量i,那么i的生命周期就发生了改变。当第二次调用函数时,就直接从i++开始了。
即:
static修饰局部变量改变了变量的生命周期,让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束,但是他的作用域其实是没有变化的
当static修饰全局变量时,代表该全局变量只在本文件内有效。当然全局变量是支持跨文件访问的。
当static修饰函数时,代表该函数只在本文件内有效。当然函数时支持跨文件访问的
宏
#include<stdio.h>
#define M 123456
int main(){
printf("M=%d\n", M);
return 0;
}
宏只做简单的文本替换,便于代码的维护性,方便阅读
宏还有一种用法我们称为“宏函数”,但是它其实和函数没有一点关系,只是用法相似。不推荐使用。
#include <stdio.h>
#define Square(x) x*x
int main()
{
printf("%d\n", Square(10));
return 0;
}