1. 为什么需要数组?


  为了解决大量同类型数据的存储和使用问题
为了模拟现实世界


  1. 数组的分类


      一维数组:
怎样定义一维数组
格式: 数据类型 数组名[元素个数] ;
为n个变量连续分配存储空间
所有的变量数据类型必须相同
所有变量所占的字节大小必须相等
//例子
int a[5] ;
一维数组名不代表数组中的所有元素
一维数组名代表数组第一个元素的地址
有关一维数组的操作
初始化
1. 完全初始化
int a[5] = {1,2,3,4,5} ;
2. 不完全初始化 //未被初始化的元素自动为零
int a[5] = {1,2,3} ;
3.不初始化 //所有元素都是垃圾值
int a[5] ;
4.清零
int a[5] = {0} ;
赋值
排序
求最大/最小值
倒置
查找
插入
删除

二维数组
格式:数据类型 数组名[行数][列数] ;
int a[3][4] ;
//总共是12个元素可以当做是3行4列看待,依次为:
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]
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} ;
int a[3][4] =
{
{1,2,3,4} ,
{5,6,7,8} ,
{9,10,11,12} ,
} ;
         //操作:
//输出二维数组的内容
int a[3][4]
{
{1,2,3,4} ,
{5,6,7,8} ,
{9,10,11,12} ,
} ;
         int i,j ;
//输出数组内容
for (i=0; i<3; ++i)
{
for (j=0; j<4; ++j)
printf("%d",a[i][j]) ;
printf("\n") ;
}
        对二维数组进行排序
求每一行的最大值
判断矩阵是否对称
矩阵的相乘


多维数组
是否存在多维数组
答:不存在,因为内存是线性一维的
n维数组可以当做每个元素是n-1维数组的一维数组。
例如:
int a[3][4] ;
//该数组是含有3个元素的一维数组
只不过每个元素都可以再分成4个小元素
int a[3][4][5] ;
//该数组是含有3个元素的一维数组
只不过每个元素都是4行5列的二位数组

Talk is cheap. Show me the code