C程序结构
- 预处理器指令
- 函数
- 变量
- 语句&表达式
- 注释
C的令牌
- C程序是由各种令牌组成,令牌可以是关键字、标识符、常量、字符串值、或者一个符号。
C数据类型
序号 | 类型与描述 |
1 | 基本类型:整数类型和浮点类型 |
2 | 枚举类型:被用来定义在程序中只能赋予其一定的离散整数值的变量 |
3 | void类型:表明没有可用的值 |
4 | 派生类型:包括指针类型、数组类型、结构类型、共用体类型和函数类型 |
C存储类
存储类定义变量/函数的范围(可见性)和生命周期。这些说明符放置在他们所修饰的类型之前,下面列出C语言中可用的存储类:
auto | 所有局部变量默认的存储类,只用在函数内,只能修饰局部变量 |
register | 用于定义存储在寄存器中(需快速访问的变量)而不是RAM中的局部变量,因此变量最大尺寸等于寄存器大小,且不能对它应用一元“&”运算符(因为它没有内存位置)。需注意,“register”变量仅可能存在寄存器中,取决于硬件和实现的限制。 |
static | 使用static修饰局部变量可以在函数调用之间保持局部变量的值 使用static修饰全局变量,会使作用域限制在声明它的文件中 static用在类数据成员上时,仅有一个该成员的副本被类的所有对象共享 |
extern | 用来在另一个文件中声明一个全局变量或函数,通常用于多个文件共享相同的全局变量或函数 当使用“extern”时,对于无法初始化的变量,会把变量名指向一个之前定义过的存储位置。 |
C运算符
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。
算术运算符 | +、-、*、/、%、++、-- |
关系运算符 | ==、!=、>、<、>=、<= |
逻辑运算符 | &&、||、! |
位运算符 |
&、|、^(异或)、~(取反)、<<(左移)、>>(右移) |
赋值运算符 | =、+=、-=、/=、%=、<<=、>>=、&=、^=、|= |
杂项运算符 | sizeof()、&(&a,返回变量地址)、*(*a,指向变量)、?:(条件表达式) |
运算符优先级 | 后缀》一元》乘除》加减》移位》关系》相等》位与AND》位异或XOR》位或OR》逻辑与AND》逻辑或OR》条件》赋值》逗号 |
C判断
语句或运算符 | 描述 |
if语句 | 一个if语句由一个布尔表达式后跟一个或多个语句组成 |
if...else语句 | 一个if语句后可跟一个可选的else语句,else语句在布尔表达式为假时执行 |
嵌套if语句 | 可以在if或else if语句中使用另一个if或else if语句。 |
switch语句 | 一个switch语句允许测试一个变量等于多个值时的情况 |
嵌套switch语句 | 可以在一个switch语句中使用另一个switch语句 |
?:运算符 | Exp1?Exp2:Exp3,如果Exp1为真,则执行Exp2,否则,执行Exp3 |
C循环
循环类型 | 描述 |
while循环 | 当给定条件为真时,重复语句或与剧组,它会在执行循环主体之前测试条件 |
for循环 | 多次执行一个语句序列,简化管理循环变量的代码 |
do...while循环 | 除了是在循环主体结尾测试条件外,其他与while语句类似 |
嵌套循环 | 在while、for或do...while循环内使用一个或多个循环 |
控制语句 | 描述 |
break语句 | 终止loop或switch语句,程序流将继续执行紧接着loop或switch的下一条语句 |
continue语句 | 引起循环跳过主体的剩余部分,立即重新开始测试条件 |
goto语句 | 将控制转移到被标记的语句,不建议在程序中使用goto语句 |
注意:for( ; ; ); 表示无限循环,ctrl +c 终止无限循环。
C函数
函数声明告诉编译器函数的名称、返回类型和参数
函数定义提供了函数的实际主体
传参方式
调用类型 | 描述 |
传值调用 | 该方法把参数的实际值值复制给函数的形式参数。在这种情况下,修改函数内的形式参数不会影响实际参数 |
引用调用 | 该方法把参数的地址复制给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。 |
C作用域规则
变量类型 | 描述 |
局部变量 | 在函数或块的内部声明的变量称为局部变量。它们只能被该函数或代码块内部的语句使用,局部变量在函数外部不可知。 |
全局变量 | 全局变量是定义在函数外部,通常是在程序的顶部,全局变量在整个程序生命周期内都有效,在任意函数内部都能访问,但在函数内部,局部变量的值会覆盖相同名称的全局变量的值。 |
形式参数 | 函数的参数,形式参数,被当做该函数内的局部变量,会优先覆盖全局变量。 |
C数组
数组是由连续内存位置组成,由低到高。声明数组需指定元素类型和数量。
概念 | 描述 |
传递数组给函数 | C支持多维数组,多维数组最简单的形式是二维数组 |
传递数组给函数 | 通过指定不带索引的数组名称来给函数传递一个指向数组的指针 |
从函数返回数组 | C允许从函数返回数组 |
指向数组的指针 | 通过指定不带索引的数组名称来生成一个指向数组中第一个元素的指针 |
C指针
指针是一个变量,其值为另一个变量的地址