C语言简洁、紧凑,使用方便、灵活。ANSI C标准C语言共有32个关键字,9种控制语句,程序书写形式自由,区分大小写。
一:表示数据类型
1、char 声明字符型变量或函数返回值类型
2、int 声明整型变量或函数
3、long 声明长整型变量或函数返回值类型
4、short 声明短整型变量或函数
5、signed 声明有符号类型变量或函数
6、unsigned 声明无符号类型变量或函数
7、double 声明双精度浮点型变量或函数返回值类型
8、float 声明浮点型变量或函数返回值类型
9、void 声明函数无返回值或无参数,声明无类型指针
10、union 声明共用体类型
对于union,分两步:
- 先算union对齐大小,对齐的大小是取决于union成员中字节对齐最大的那个;
- 再算union实际分配的空间,而分配给union的实际大小不仅要满足是对齐大小的整数倍,同时要满足实际大小不能小于最大成员的大小
11、struct 声明结构体类型
对于stuct,分三步:
- 先算struct的对齐大小,对齐的大小也是取决于struct成员中字节对齐最大的那个
- 然后根据每个成员的对齐大小对齐每个成员算出分配的空间
- 最后算出struct实际分配的空间,在满足对齐每个成员的基础上,满足是Struct对齐大小的整数倍。
12、enum 声明枚举类型
二:修饰变量
13、extern 声明变量或函数是在其它文件或本文件的其他位置定义
14、register 声明寄存器变量
15、auto 声明自动变量,局部变量(自动储存)
16、const 声明只读变量,定义不可更改的常量值
- 修饰指针变量
1.const放在指针“ * ”左边时,表示指针变量指向的内容不能通过指针来改变,指针变量本身可以改变。
int a = 10;
int b = 20;
const int *p = &a;
//*p = 30; 错误代码
p = &b;
2.const放在指针“ * ”右边时,表示指针变量本身不能改变,指针变量指向的内容可以通过指针来改变。
int a = 10;
int b = 20;
int * const p = &a;
*p = 30;
//p = &b;错误代码
- 修饰字面常量
使其具有常属性,在c++中,const修饰的标识符就是常量。
17、static 声明静态变量
修饰全局变量(代码块外变量)时,改变变量的链接属性(外->内),使全局变量只能在当前源文件使用。存储类型和作用域不受影响。
修饰局部变量时,改变变量的存储类型(自动变量->静态变量),不改变其作用域。
修饰函数时,改变函数的链接属性,使函数只能在当前源文件使用。
18、typedef 重新定义数据类型
使用typedef定义函数指针:typedef void(Fun*)(void)
19、volatile 防止编译器进行自动优化,比如:局部const变量通过地址进行修改时,编译器将其优化到了寄存器中,导致修改不起作用。
const int num=10;
num=20;
//输出num=10;内存存储num=20;
volatile const int num=10;
num=20;
//输出num=20;
三:用于控制语句
- 条件判断语句
20 、if 条件语句
21、else 条件语句否定分支(与 if 连用)
22 、switch 用于开关语句
23 、case:开关语句选择项分支
24 、default:开关语句中的”其它”(默认选择项)分支
- 循环执行语句
25 、do 循环语句的循环体
26 、while 循环语句的循环条件
27 、for 构成for循环语句
- 转向语句
28 、break语句 跳出当前循环
29 、continue语句 结束当前循环,开始下一轮循环
30 、return语句 子程序返回语句(可以带参数,也可不带参数)
31 、goto语句(此语句尽量少用,因为这不利结构化程序设计,滥用它会使程序流程无规律、可读性差)
四:其他
32 、sizeof
sizeof(数组名)———数组名表示整个数组,求取的是整个数组的大小,单位字节。
求数组个数
int arr[]={1,2,3,4,5};
sizeof(arr)/sizeof(arr[0]);
- sizeof内部的表达式不参与运算
附:sizeof结合数组的相关运算(重要)
https://blog.csdn.net/sifanchao/article/details/79797241