三、C语言-运算符
四、C语言-数组
1.为什么需要数组
为了解决大量同类型数据的存储和使用问题
为了模拟现实世界(地图)
2.数组的分类
一维数组
如何定义一维数组
为n个变量分配连续存储空间
所有的变量的数据类型必须相同
所有变量所占的字节大小必须相等
例:
int a[5];
一维数组名不代表数组中的所有元素
一维数组名代表数组第一个元素的地址
有关一维数组的操作
初始化
- 完全初始化
Int a [5] = {1,2,3,4,5};
- 不完全初始化
Int a [5] = {1,2,3};
- 不初始化
Int a[5];
不初始化,所有元素是垃圾值
- 清零
Int a [5] = {0};
- 错误的写法
Int a[5];
a[5] = {1,2,3,4,5}; //错误
只有在定义数组的同时才可以整体赋值,其他情况下整体赋值都是错误的。
Int a [5] = {1,2,3,4,5};
a[5] = 100;
没有a[5]这个元素
Int a [5] = {1,2,3,4,5};
Int b[5];
如果要把a数组中的值全部赋值给b数组;
错误的写法:b = a;(数组名代表第一个元素的地址)
正确的写法:
for (i=0; i<5; ++i)
b[i] = a[i];
数组的常见算法
赋值
排序
求最大/最小
倒置
查找
插入
删除
二维数组
- Int a[3][4];
总共是12个元素,可以当做三行四列看待,这12个元素的名字依次是:a[0][0],a[0][1],a[0][2],a[0][3];
a[1][0],a[1][1],a[1][2],a[1][3];
a[2][0],a[2][1],a[2][2],a[2][3];
a[i][j]表示第i+1行第j+1列元素。
- 初始化
int a[3][4]={
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
选中文本,Shift+tab键将文本向前移动
- 二维数组的常见算法
对二维数组排序
求每一行的最大值
判断矩阵是否对称
矩阵的相乘
多维数组
是否存在多维数组
不存在,内存是线性一维的
n维数组可以当做每个元素是n-1维数组的一维数组
比如:int a[3][4];
该数组是由含有三个元素的一维数组,只不过每个元素都可以再分成四个小元素。
Int a[3][4][5]
该数组是含有是三个元素的一维数组,只不过每个元素都是四行五列的二维数组。