黑马程序员技术交流社区
标题:
二维数组的一点体会
[打印本页]
作者:
八寒地狱
时间:
2014-10-21 01:45
标题:
二维数组的一点体会
一
二维数组
一维数组的每一个元素又是一个数组(数组的数组)
int a[3][4],定义一个数组,有3个元素,a[0]、a[1]、a[2]
a[0] 又是一个一维数组,有4个元素
格式:数据类型 二维数组名[第一维的长度][第二维的长度]
int arr[3][4];
二维数组定义的注意事项跟一位数组差不太多
注意:
1)数组名不能和变量名重复
2)遵循标识符命名原则
3)数组的长度可以使用宏定义
4)数组的长度可以使用变量
二
二维数组的初始化和访问方法
定义的同时进行初始化
int a[5]={1,2,3};
int a[] = {1,2};
int a[3][4]={{},{},{}}
格式:int a[m][n]={{值1,值2,....,值n},{},{}.....{m}}
(1)完全初始化
int a[2][3]={{12,2,3},{23,45,56}};
int a1[2][3]={1,5,2,3,4,8};
省略第一维的初始化,注意:第二维不能省略
int a[][2]={{1,2},{3,4},{3,5}}
(2)部分初始化
int a3[2][2]={{0},{0}};
int a5[2][2]={1,2,3}
指定元素的初始化
2)先定义后初始化
int a[4][3];
a[0][0]=12,a[0][1]=12,a[0][2]=12
a[1][0]=12,a[1][1]=12,a[1][2]=12
)二维数组的访问
数组名[行下标][列下标];
int a[3][4]; //最大下标 a[2][3]
a[0][0] = 13;
int [m][n]数组
行下标范围:0 ~ m-1
列下标范围:0 ~ n-1
小练习
对二维数组的初始化和遍历
void test1(){
//定义一个二维数组
int arr[4][5];
int arr2[][3]={1,12,2,2,2,3,34,4,5};
for (int i=0; i<4; i++) {
for (int j=0; j<5; j++) {
//对数组arr进行初始化
arr[i][j]=i+j;
}
}
//对二维数组的遍历
for (int i=0; i<4; i++) {
for (int j=0; j<5; j++) {
printf("%d ",arr[i][j]);
}
printf("\n");
}
}
三 二维数组的储存方法
int main()
{
//定义一个二维数组
int arr[4][5];
int arr2[][3]={1,12,2,2,2,3,34,4,5};
//计算数组的总得字节数
int a[5];
//计算一维数组的占用的总字节数
int size = sizeof(a);
size = sizeof(a)/sizeof(int);
//计算二维数组占用的总得字节数
size = sizeof(arr);
//计算一行占用多少个字节
size = sizeof(arr[0]);
//计算一个二维数组的每一行有多少列
// 20 4
size = sizeof(arr[0])/sizeof(int);
//计算一个二维数组有多少行
size = sizeof(arr)/sizeof(arr[0]);
printf("%d\n",size);
printf("Hello, World!\n");
return 0;
}
四
二维数组和函数的关系:
1)二维数组的元素作为函数的参数
int a[4];
一维数组:
int sum(int x,int y){
}
sum(a[0],a[1])
int a[3][4]={1,3,4,4,5,6,6,7,12,90,1,34};
二维数组:
int max(int x,int y){
return x>y?x:y;
}
int m = max(a[1][0],a[2][3]);
二位数组元素作为函数的参数实质是值传递
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2