编码练习
选择排序
冒泡排序
二分法
循环
多维数组
标量:保存单一数据项
聚合变量:存储成组的数据:数组,结构体
数组检查下标是否越界
地址消除器 -- 检查地址取值时是否合法
在同一个表达式中对i同时有取值操作和++操作,不同编译器有可能行为不一致,所以不建议这么写
i = 0
while(i < N) {
a[i] = b[i++]
}
不建议以上写法
插入排序
归并排序 两个有序的数组合并
数组长度的获取
多维数组 一种特殊的一维数组
内存中是行主存的方式
int a[3][4]
%p
scanf 的时候:
a[3] 不需要&
&a[3][4] 需要&
int i = 1;
int ret = sizeof(a[2][++i]);
printf("i = %d, ret = %d", i, ret);
//输出:i = 1, ret = 4
sizeof中的++i等算数运算都是不生效的
多维数组下标的变化
最后一维下标先递增,第一维下标最后递增
warning: format ‘%s’ expects argument of type ‘char *’, but argument 3 has type ‘int *’
system(clear) 清屏 区分系统不同调用
数组也可用来存储需要的标记 --> 鞍点 :一个数是本行的最大值,是本列的最小值
常量数组
变长数组 VLA 不推荐使用,避免变量占据太多栈上的空间
运行时刻才知道长度的数组 --> 堆区(动态分配)
编程练习
五子棋
鞍点