导图社区 C语言知识体系
学习C语言的过程中,往往是从操作符、运算符等基础知识点开始介绍,而忽略了各个具体知识点的内在和层次联系。本思维导图采用由上至下的层次结构,建立了由工程到文件到具体知识点的关联体系。
编辑于2022-01-11 10:18:14C语言工程
A模块
源文件A.c
A功能:函数A
算法:指令的序列(若干条语句)
表达式
标识符
分类
常量
变量
自定义类型名
函数名
命名规则
只能由数字、大小写字母和下划线(_)三类符号混合构成
数字不能作为第一个字符
不能使用系统的关键字
运算符
作用:说明特定操作的符号
标识符与运算符一起构成了表达式
运算符的操作数
一元运算符,逻辑非 !a
二元运算符,算数加,1+2
三元运算符,条件运算,?:
运算符的优先级
一般情况下一元大于二元
运算符的结合性
算数运算符:自左向右
赋值运算符:自右向左
算数运算符与算数表达式
正
负
加
减
乘
除:整数之间除法结果为整数,其他类型除法为实数
模:(取余数):只有整数可以求模,而且余数的符号取决于被除数的符号,C语言的取模操作与离散数学的取值不同,主要是由于C语言的除法是截尾式的,也就是省略小数部分。
结合性:自左向右
赋值运算符与赋值表达式
作用:修改一个内存内数据的值
常见赋值操作
用变量的值赋值,x=y
初始化,int x=0;
用常量赋值, y=0;
复合赋值:+=,-=
结合性:自右向左,x=y=z=3
二元赋值表达式返回表达式的左值,即a=8,这个表达式代表一个数值8
自增自减运算符与表达式
分为前缀和后缀两种
后缀优先级高于前缀
后缀是先完成表达式操作,再改变变量的值
前缀是先改变变量的值,再完成表达式操作
自增自减既是算数运算又是赋值运算
注意事项:前缀后缀对变量的值影响一样,但是对表达式的值影响不一样,前缀表达式的值等于变量运算后的值,后缀表达式的值等于变量运算前的值
关系运算符与关系表达式
大于
小于
大于等于
小于等于
等于
不等于
注意事项
不能用等号判断浮点数是否相等,判断方法是利用fabs求两个浮点数的差值是否小于一定的精度值
判断变量x的值是否为8的写法:x==8, 8==x,但是不能写成x=8
逻辑运算符与逻辑表达式
非,非假为真
与
或
注意事项:C语言的与和或不满足交换律,即E1&&E2不等价于E2&&E1,原因是C语言为了追求效率,E1不成立的情况下则没有必要判断E2。(x=8)&&(a<b)
左值与右值
左值,修改内存数据
右值,读取内存数据
注意事项:只有变量可以做左值,即分配了内存的变量
sizeof运算符与表达式
作用:求表达式或者类型占用的字节数
逗号运算符与表达式
二元运算符
优先级最低
对左右操作符不做任何操作,仅仅是区分由左向右的表达式计算顺序
显示类型转换
作用:强制类型转换
转换有风险,操作需谨慎
转换式:(Type)E
分号结尾
数据结构:数据类型
基本类型
数值类型
整数
短整型 short 占16位
有符号范围:-32768~32767
无符号范围:0~65535
整形 int 占32位
有符号范围:-2^31~2^31-1
无符号范围:0~2^32-1
长整形 long 占64位
有符号范围:-2^63~2^63-1
无符号范围:0~2^64-1
浮点型
单精度型 float
双精度型 double
隐式类型转换
四种整数类型运算时自动提升为int:char,unsigned char, short unsigned,short
其他整数类型运算时按以下顺位提升: int, unsigned int, long long, unsigned long long , float, double, long double
字符类型 char:C语言是将字符编码后使用,即当做整形数据来管理。ASCII
构造类型
数组
结构体
共用体
枚举
指针类型
空类型void
其他类型
字符串
布尔型
复数类型
虚数类型
B功能:函数B
头文件A.h
B模块
源文件B.c
C功能:函数C
算法:指令的序列(若干条语句)
数据结构:数据类型
D功能:函数D
头文件B.h
C模块
源文件C.c
E功能:函数E
算法:指令的序列(若干条语句)
数据结构:数据类型
F功能:函数F
头文件C.h