1.头文件
1 2
| #include <stdio.h> #include <stdbool.h>
|
2.框架
3.变量,数组
不能以数字开头
不能是关键字
不能有空格
3.1一维数组
1 2
| int array[3] = {1,2,3}; printf("%d",array[0]);
|
3.2二维数组
1 2
| int array[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}; printf("%d",array[0][0]);
|
4.输出
换行符/n
5.整型
1 2 3 4
| int long unsigned int %d
|
6.浮点型
7.字符型
8.布尔型
1 2 3 4
| #include <stdbool.h>
bool %d
|
9.运算符
- 第一优先级:
[]
数组下标
()
圆括号 (用于函数调用或改变优先级)
.
成员选择运算符(结构体或联合体)
->
成员选择运算符(通过指针访问结构体或联合体成员)
- 第二优先级:
-
负号(单目运算符)
!
逻辑非
~
按位取反
&
取地址
*
间接访问(指针解引用)
++
自增
--
自减
(type)
强制类型转换
sizeof
计算类型或表达式的大小
_Alignof
(C11) 计算类型的对齐要求
- 第三优先级:
- 第四优先级:
- 第五优先级:
- 第六优先级:
<
小于
<=
小于等于
>
大于
>=
大于等于
- 第七优先级:
- 第八优先级:
- 第九优先级:
- 第十优先级:
- 第十一优先级:
- 第十二优先级:
- 第十三优先级:
- 第十四优先级:
=
赋值
+=
, -=
简写赋值
*=
, /=
, %=
&=
, ^=
, |=
<<=
, >>=
- 第十五优先级:
结合律
- 左结合性:大多数运算符都是左结合性的,这意味着它们从左向右进行计算。
- 右结合性:少数运算符如赋值运算符和单目运算符是右结合性的,这意味着它们从右向左进行计算。
10. 判断
1 2 3 4 5 6 7
| if(){ }else if(){ }else{ }
|
1 2 3 4 5 6 7 8 9 10
| switch(){ case 1: break; case 2: break; default: }
|
11.条件运算符
b = (a>5)?1:0
1 2 3 4 5
| if(a>5){ b = 1; }else{ b = 0; }
|
12.for循环
1 2 3
| for(int i=0; i<5; i++){ }
|
13.while循环
1 2 3 4
| int i = 0; while(i<5){ }
|
14.do-while循环
至少会执行一次,先执行一次 然后判断再执行。
15.循环的控制
break
跳出当层循环
continue
跳出本层循环的剩余语句,然后进入下一次循环
16.goto(避免使用)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #include <stdio.h>
int main() { int i = 0;
start: i++; if (i == 5) { goto end; } printf("i = %d\n", i); if (i < 10) { goto start; }
end: printf("Loop ended.\n"); return 0; }
|
17.函数
1 2 3 4
| int Func(int para1, int para2){ return 0; }
|
1 2 3
| void Func(int para1, int para2){ }
|
18.指针
1 2 3 4 5 6 7 8
| int a = 10, b = 15; int *ptr;
ptr = &a; printf("%d",*ptr);
ptr = &b; printf("%d",*ptr);
|