数组
为什么需要数组
为了解决大量同类型数据的存储和使用的问题
用数组可以模拟现实世界
数组的分类:
一维数组
怎样定义一维数组
为n个变量连续分配内存空间
所有的变量的数据类型必须相同
所有变量所占的字节大小必须相等
例子:
int a[5];
一维数组名不代表数组中所有的元素
一维数组名代表一维数组第一个元素的地址
有关一维数组的操作:
初始化
完全初始化:
int a[5] = {1, 2, 3, 4, 5};
不完全初始化,未被初始化的元素自动为零:
int a[5] = {1, 2};
不初始化:
int a[5];
清零:
int a[5] = {0};
错误写法:
int a[5];
a[5] = {1, 2, 3, 4, 5}; // 错误
只有在定义数组的同事才可以整体赋值,其他情况下整体赋值都是错误的
int a[5];
a[5] = 100; // 错误,因为没有a[5]这个元素
int a[5] = {1, 2, 3, 4, 5};
int b[5];
如果要把a数组中的值全部复制给b数组
错误的写法:
b = a; //error
正确的写法:
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[m][n]; //该二维数组右下角的元素是a[m-1][n-1]
初始化:
int a[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
}
输出二维数组元素:
是否存在多维数组?
不存在。因为内存是线性一维的
n维数组可以当做每个元素是n-1维数组的一维数组
比如:
int a[3][4];
该数组是含有3个元素是一维数组
只不过每个元素都可以分成4个小元素