数组和链表一样是一种线性结构,数组在内存(栈,stack)中用来连续存储同一类型的数据。对数组的操作在java中有个很强大的类库(API)。与数组最为密切的概念就是指针了,与数组的有关算法基本上与指针有关。二维数组在《数据结构》中可以用来模拟现实世界的“图表”(数据结构),在UCOS-II操作系统中,二维数组有经典的应用(任务优先级表)。这里通过一个二维数组的例子,讲述一下有关二维数组的理解和操作。这个例程是自己学习完java数组部分内容时自己编写的,并有注解。
#include<stdio.h>
int main(void)//比较,输出最大值
{
int i, j;//
//定义一个二维数组:3行3列;在c语言中二维数组方括号内必须初始化数组长度,否则编译出错!
//在java中方括号内可以不必声明,还可以写成:int arr[][]={{1,5} ,{4,2,3},{6,8 ,7}};注意,第一个元素少了一个!
//在c语言中不能写成:int arr[][]={{0,1,5} ,{4,2,3},{6,8 ,7}};
// int arr[3][3]={{0,1,5} ,{4,2,3},{6,8 ,7}};
int arr[3][3]={ {10,1,5},//定义一个二维数组,该数组共有3个元素,每个元素也包含3个元素
{4,2,3},
{6,8,7}
};
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
arr[ i][2]=0;//将二维数组中所有元素的第2列内容全部赋值0;即每个元素中的的第2个元素全部赋值0;
// arr[0][j]=0;//将二维数组中的第0个元素内容全部赋值0;
printf("%d\n\r" ,arr[ i][j]);
}
}
// printf("\n\n" );
return 0; //结束主函数
}
/* 二维数组也可以理解为一维数组中的数组,即二维数组中的每一个元素也是由同类型数据数组组成的;
所以二维数组也是按顺序排列的,只是构造方法有些改变。
如:
int arr[][]={{0,1,5} ,{4,2,3},{6,8 ,7}};该二维数组共占9*4==36个字节空间,二维数组中的第一个方括号表示
该二维数组的第几个元素或元素数,第二个方括号表示该二维数组的第几个元素中的第几个元素,这就是所谓的
二维数组是“一维数组中的数组”;二维数组 a[][]中的“{0,1,5}”花括号部分就表示该数组的第0个元素。花括号内部
内容就表示第0个元素一共有3个元素,二维数组也可以转换成一维数组,二维数组的优点是可以很方便的模拟和描述一个平面;
arr[1][2]就表示二维数组arr[][]中的第二个元素中的第三个元素,
即相当于:int arr[0]={0,1,5},arr[1]={4,2,3},arr[2]={6,8 ,7};//定义3个一维数组
可见,将几个独立定义的一维数组可以组合成二维数组。
如, arr[ i][j]就表示二维数组arr[][]中的第i个元素中的一维数组的第j元素,描述平面时i表示“行”,j表示“列”
int arr[][]={ {0,1,5},
{4,2,3},
{6,8,7}
};