赞
踩
一、定义
类型名 数组名[常量表达式1][常量表达式2];——为数组说明符
必须
有用两个分开的方括号[][]括起来的常量表达式(绝对不能把两个内容放在一个[]括号中),常量表达式的值只能是正整数。int a[3][4];
其中,int是类型名,a[3][4]为二维数组说明符。
3行4列的二维数组如下所示:
第0列 第1列 第2列 第3列
第0行 a[0][0] a[0][1] a[0][2] a[0][3]
第1行 a[1][0] a[1][1] a[1][2] a[1][2]
第2行 a[2][0] a [2][1] a[2][2] a[2][3]
按行存放
”。按照顺序走,第0行没有存放完,不能存放下一行。二、二维数组元素的引用
*引用二维数组元素时必须带有两个下标。引用形式如下:
数组名[下标表达式1][下标表达式2]
例如,若有以下定义语句:
double w[4」[2];
二、二维数组的初始化
不同的初始化,主要看花括号的个数与数组元素的区别,主要有四种初始化的选择。
1、所赋初值个数与数组元素的个数相同
全部初值括在一对花号中,每一行的初值又分别括在一对花括号中,之间用逗号隔开:
int a[4][3]= { { 1,2,3 } , { 4,5,6 } , { 7,8,9 } , { 10,11,12 } } ;
2、每行所赋初值个数与数组元素的个数不同
当某行一对花括号内的初值个数少于该行中元素的个数时,如:
int a[4][3]={ { 1,2 },{ 4,5 }, { 7 },{ 10 };
系统将自动给该行后面的元素补初值0。不要越界,一个花括号只负责一行的内容,不负责其他行的内容,不能改变其他花括号中的内容。
3、所赋初值行数少于数组行数
当代表着给每行赋初值的行花括号对少于数组的行数时,如:
int a[4][3]= { { 11,21 } , { 14,5 } } ;
系统将自动给后面各行的元素补初值0。
4、赋初值时省略行花括号对
在给二维数组赋初值时可以不用行花括号对,例如:
int a[4][3] ={ 1,2,4,5 };
注意:此处所赋初值与上面第3种情况中所赋初值的结果完全不同。在编译时,系统将按a
数组元素在内存中排列的顺序,将花括号内的数据一-对应地赋给各个元素,若数据不足,系统将给后面的元素自动补初值0。按照数组存放的顺序走,要循规蹈矩。
四、通过赋初值定义二维数组的大小
对于一维数组,定义中省略方括号中的常量表达式,通过所赋初值的个数来确定数组的大小;
对于二维数组,只能省略第一个方括号中,而不能省略第二个方括号中的常量表达式。所以是第一个方括号的内容可有可无,第二个必须有。两个方括号不能漏了。
例如: int a[ ][3] ={{1,2,3},{4,5},{6,8}};
第一维的大小按以下规则决定:
五、二维数组的定义和数组元素引用举例
例1: 通过键盘给2x3的二维数组输入数据,第一行赋1、2、3,第二行赋10、20、30,然后
按行输出此二维数组。
本题示例了引用二维数组元素、对二维数组进行输入和输出的基本方法。程序中用i作为
行下标,j作为列下标。程序如下:
#include<stdio.h> int main(){ int s[2][3],i,j; printf("请输入需要赋值的数\n"); for( i=0 ; i<2 ; i++) for(j=0; j<3 ; j++) scanf("%d" ,&s[i][j]); printf("输出二维数组\n"); for( i=0 ; i<2 ; i++) { for(j=0; j<3; j++) printf("%4d" ,s[i][j]); printf("\n"); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。