C语言复习
复习
C语言的三种结构
1.顺序结构
2.分支结构
3.循环结构
数据类型
1.作用(两个)
2.常见的数据类型: cahr, short, int, long, float, double, BOOL(值, 字节数)
变量
1.定义(三要素)
2.使用: 变量名
变量名的命名规则(5条)
常量
1.整型常量
2.浮点型常量
3.字符常量
运算符
1.赋值运算符
2.算术运算符
3.关系运算符
4.逻辑运算符
5.条件运算符
6.取值运算符
7.取址运算符
8.指向运算符
9.复合运算符
表达式 = 常量 + 变量 + 运算符
语句: 最小的执行单元, 以;结束
输出函数printf
占位符: %d %c %hd %ld 5f %lf %u %lu %s %p %-0m.n(- 和0不能同时存在) %o(八进制) %x(十六进制)
转义字符: \n, \t, %%, \"(双引号), \'(单引号)
输入函数scanf
1.配合使用: 变量和printf
2.注: ""不要\n, 大回车, 地址&, getchar(), rewind(stdin)
分支结构
1.if
/*
if (<#condition#>) {
<#statements#>
}
*/
/*
if (<#condition#>) {
<#statements#>
} else {
<#statements#>
}
*/
/*
if (<#condition#>) {
<#statements#>
} else if{
<#statements#>
} else {
<#statements#>
}
*/
2. ?: = if else
3. switch...case
/* switch (<#expression#>) { case <#constant#>: <#statements#> break; default: break; } */
循环结构
1.for
/* for (<#initialization#>; <#condition#>; <#increment#>) { <#statements#> } */
2.while
/* while (<#condition#>) { <#statements#> } */
3.do...while
/* do { <#statements#> } while (<#condition#>); */
循环嵌套, 不用超过三层
循环结束
1.break
2.continu
数组
定义
int a[5] = {0};
使用
1.不能够直接参与运算
2.元素 a[i]
随机数: arc4random % (x - y + 1) + y
遍历数组: for
遍历字符串: while
数组排序: 冒泡排序
sizeof: 求变量或表达式的字节数
二维数组
定义: 有几个维度, 有几个[]
二维数组(行, 列)
三维数组(层, 行, 列)
使用数组的元素
访问数组的元素: 每个维度的下标都是从0开始
字符数组
字符串: while, '\0'
字符串数组: 使用一层for循环, %s打印
字符串数组的冒泡排序
函数: 具有特定功能的代码段
函数的好处
1.重复使用
2.良好的移植性(建立在: 把函数写在一对.h和.m文件中)
.h: 函数声明和结构体声明
.m函数定义
一个严格的函数:
1.声明
2.定义
3.调用
函数定义
返回值类型函数名(参数){
语句
}
注: 1.函数的定义写在函数外部
2.参数名数据类型相同, 不能省略
3.没有返回值用void; 有返回值, 必须用return
函数调用
函数名(实参)
形参
实参
局部变量
全局变量
数组作为函数的参数
void printArray(int a[], int count);
void printArray(int *a, int count);
结构体:
1.结构体是一种数据类型
2.可以由用户自定义
3.由多个数据类型组成
结构体的声明
/* struct <#struct name#> { <#struct fields#> }; */
注: 结构提名用小驼峰法
使用typedef对结构体重命名
typedef旧名新名
结构体变量
Student stu = {"张三", 'm', 18};
结构体变量可以整体赋值
Student stu1 = stu;
访问结构体的成员变量, 点语法
结构体变量.成员变量名
结构体数组
冒泡排序(姓名, 学号, 年龄)
指针:
1.内存的地址编号
2.一个字节就对应一个地址编号
指针变量
数据类型 *变量名 = NULL;
所占的字节数: 和操作系统的位数相关, 与数据类型无关
数据类型: *p, p + 1
指针的应用
1.数组: 数组在内存中连续存储的; 数组的名字就是数组的首地址
数组名和指向数组首地址的指针变量
区别: 所占的字节数sizeof, 数组名是常量地址
2.字符串: %s打印的实质
3.函数: 在函数内部修改外部定义的变量, 需要传递指针
4.结构体: 通过指向操作符(->)访问成员变量