导图社区 C语言语法知识总结
这是我学习C语言过程中的基础语法总结,非常详细且比较有条理的,适合入门同学一起查看整理。会一直更新的!
自学 C 语言总结的语法知识,内容比较详细,适合初学者~
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
C语言
变量
定义:程序可操作的存储区的名称
组成:字母、数字、下划线
区分字母大小写
必须以字母或下划线开头
基本的变量类型
char
一个字节,但它是整数类型
int
整数
float
单精度浮点值
double
双精度浮点值
void
表示类型缺失
每个变量都有特定类型,类型决定变量存储的大小和布局
变量的定义
简单来说就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储。
变量可以在声明的时候被初始化(指定一个初始值)
不带初始化值的定义
带有静态储存持续时间的变量会被初始化为NULL(所有字节的值都是0)
这里不理解的静态存储支持,到了存储类分支之后就能理解了
其他所有变量的初始值都是未定义
变量声明
向编译器保证变量以指定的类型和名称存在,以便其进行下一步编译
声明有两种情况
1、需要建立存储空间,例:int a,其实这就是定义
2,不需要建立存储空间,通过使用 extern 关键字声明而不定义
除非有 extern 关键字,否则都是变量的定义
表达式的类型
左值(Lvalues)表达式:指向内存位置的表达式,可以出现在赋值号的左右两边
右值(rvalue)表达式:存储在内存中某些地址的数值,只能在赋值号的右边
总结来说就是,左值其实只是一个名称,而右值是真是存在的数,是变量存储的内容
常量
又称字面量
可以是任何基本的数据类型
整数常量
浮点常量
字符常量
枚举常量
前缀
十六进制
前缀:0x或者0X(也是数字0)
八进制
前缀:0(是数字0,不是字母o)
十进制
不带前缀默认是十进制
后缀
后缀由U和L组成,不区分大小写,顺序任意
U:表示无符号整数(Unsigned)
L:表示长整数(Long)
组成
整数部分
小数点
小数部分
指数部分
表示形式
小数形式
指数形式
带符号的指数由e或E引入
括在单引号中
类别
普通字符,如'x'
转义序列
\\,\ 字符
\',' 字符
\"," 字符
\?,? 字符
\f,换页符
\n ,换行符
\r,回车
制表符
\t,水平制表符
\v,垂直制表符
字符串常量
括在双引号" "中
一个字符串可以包含多个字符常量
定义常量的方式
1.使用#define 预处理器:#define identifier value
例如:#define LENGTH 10
2. 使用 const 关键字:const type variable = value;
例如:const int length = 10;
存储类
定义C程序中变量/函数的范围(可见性)和生命周期
auto 存储类
说明符:auto
是所有局部变量默认的存储类
register 存储类
说明符:register
用于定义存储在寄存器中而不是在 RAM 中的局部变量。
限制
1.变量最大尺寸等于寄存器的大小(通常是一个词)
2.不能对它应用一元的'&'运算符,因为它没有内存
static 存储类
指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。
两种情况
使用 static 修饰局部变量时,可以在函数调用之间保持局部变量的值
使用 staic 修饰全局全局变量时,会使变量的作用域限制在声明它的文件内。
全局声明的一个static变量或方法可以被任何函数或方法调用, 只要这些方法出现在跟 static 变量或方法同一文件中
个人一句话总结:static 可以使局部变量变成全局变量
extern 存储类
提供一个全局变量的引用,全局变量对所有的程序文件都是可见
当使用 extern 时,对于无法初始化的变量,会把变量名指向一个之后定义过的存储位置。
运算符
定义:一种告诉编译器执行特定的数学逻辑操作的符号
算术运算符
+ 加
- 减
* 乘
/ 除
% 取余
++ 自增
-- 自减
关系运算符
== 相等
!= 不相等
> 大于
< 小于
>= 大于等于
<= 小于等于
关系运算符的返回值只有真(true)或假(false)
逻辑运算符
&& 与
|| 或
! 非
逻辑运算符的返回值也只有 true or false
位运算符
作用于二进制的位,并且逐位操作
& 位与
|位或
^ 位异或 同为假,异为真
~ 位取反
<< 位左移
>> 位右移
赋值运算符
= 赋值
+= 加且赋值
-= 减且赋值
*= 乘且赋值
/= 乘且赋值
%= 取余且赋值
<<= 左移且赋值
>>= 右移且赋值
&= 位与且赋值
|= 位或且赋值
^= 位异或且赋值
杂项运算符
sizeof() 返回变量的大小
& 返回变量的地址
* 指向一个变量
?: 条件运算符
运算符的优先级与结合性
从上至下,优先级由高到低 结合性在末尾
后缀 () [] -> . ++ - - 从左到右
一元 + - ! ~ ++ - - (type)* & sizeof 从右向左
乘除 * / % 从左到右
加减 +- 从左向右
位移 <<>> 从左向右
关系 < <= => > 从左到右
相等 == != 从左到右
位与 & 从左到右
位异或 从左到右
位或 从左到右
逻辑与 && 从左到右
逻辑或 || 从左到右
条件 ?: 从右到左
赋值 = += -= *= /= %=>>= <<= &= ^= |= 从右到左
逗号 , 从左到右