第4讲 数组
程序 = 算法 + 数据结构,数组是存储数据的强而有力的手段。
1. 一维数组
1.1 数组的定义
数组的定义方式和变量类似。
1.2 数组的初始化
在main函数内部,未初始化的数组中的元素是随机的。
局部变量会定义在栈里边,全局变量会定义在堆里边 零页 申请完用的时候再开。
堆区在底层,栈区虚拟在上层,中层为静态存储区,总大小为内存大小。
1.3 访问数组元素
通过下标访问数组。
练习题1: 使用数组实现求斐波那契数列的第 N 项。
练习题2:输入一个 n,再输入 n 个整数。将这 n 个整数逆序输出。
练习题3:输入一个 n ,再输入 n 个整数。将这个数组顺时针旋转 k(k≤n) 次,最后将结果输出。旋转一次是指:将最左边的数放到最右边。
练习题4:输入 nn 个数,将这 nn 个数按从小到大的顺序输出。
练习题5:计算 22 的 NN 次方。N≤10000
2. 多维数组
多维数组就是数组的数组。
int a[3][4]; // 大小为3的数组,每个元素是含有4个整数的数组。
int arr[10][20][30] = {0}; // 将所有元素初始化为0
// 大小为10的数组,它的每个元素是含有20个数组的数组
// 这些数组的元素是含有30个整数的数组
练习题:输入一个 nn 行 mm 列的矩阵,从左上角开始将其按回字形的顺序顺时针打印出来。
蛇形矩阵
memset 更快初始化,清空数组 <cstring>
按字节处理 sizeof 可以看成函数 也可以看成操作符 不带括号
memset(a, 0, sizeof(a)) 0 -1
memcpy 复制数组的值
memcpy(b, a, sizeof a); a[10] = {1} b[10] 把a赋值给b