数组
1.为什么需要数组
为了解决大量同类型数据的存储和使用问题
为了模拟现实世界
2. 数组的分类
一维数组
1).怎样定义一维数组
为n个变量连续分配存储空间。
所有的变量数据类型必须相同。
所有变量所占的字节大小必须相等。
例子:
int a[5];
(一维数组名不代表数组中的所有元素,代表数组第一个元素的地址)
2).有关一维数组的操作
初始化:
完全初始化(数组中,每个元素均被赋值了)
int a[5]={1,2,3,4,5};
不完全初始化(数组中,有元素未被赋值。未被初始化元素自动为0)
int a[5]={1,2,3};
不初始化(数组中,所有元素未被赋值。所有元素是垃圾值)
int a[5];
清零(数组中,每个值变为0)
int a[5]={0};
错误写法:
(1)
int a[5];
a[5]={1,2,3,4,5};//错误(错误原因:没有a[5]这个元素,而且将5个值赋给一个元素也不对。只有定义时a[5]中的5表示个数,定义完后再出现a[5]中的5表示下标)只有在定义数组的同时才可以整体赋值,其他情况下整体赋值都是错误的
(2)
int a[5];
a[5]=100;//错误(错误原因:没有a[5]这个元素,最大只有a[4])
(3)
int a[5]={1,2,3,4,5};
int b[5];
如果要把a数组中的值全部赋值给b数组
错误写法:
b=a;//错误(错误原因:a代表a[0]的地址,b代表b[0]的地址)
正确写法:
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};
操作:
输出二维数组内容(使用两个for循环)
对二维数组排序
求每一行的最大值
判断矩阵是否对称
矩阵的相乘
多维数组
是否存在多维数组
不存在,因为内存是线性一维的,n维数组可以当做每个元素是n-1维数组的一维数组
(eg: (1). int a[3][4];该数组是含有3个元素的一维数组,只不过每个元素都可以再分成4个小元素
(2).int a[3][4][5];该数组是含有三个小元素的一维数组,只不过每个元素都是4行5列的二维数组)