二级C:二维数组

二维数组

一、定义

  • ①数组两个中括号[][],第一个可有可无,第二个必须有,里面的内容为常量表达式,也就是不能改变的。
    当数组中每个元素带有两个下标时,称这样的数组为二维数组。
  • 在C语言中,二维数组的定义语句形式如下所示:(可以同时定义多个类型名相同的变量)
类型名  数组名[常量表达式1][常量表达式2];——为数组说明符
  • 二维数组说明符中必须有用两个分开的方括号[][]括起来的常量表达式(绝对不能把两个内容放在一个[]括号中),常量表达式的值只能是正整数。
    常量表达式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结束。一般定义数组时,如果使用for循环,其中的判断的条件可以是数组不等于’\0’,或者知道数组长度,小于该长度,如i<5。其中5为一维数组的上界,二维数组的行上界或列上界。
  • 数组中的元素在内存中占一系列连续的存储单元。也就是说,先存放第0行的元素,再存放第1行的元素···这种存放顺序称为“按行存放”。按照顺序走,第0行没有存放完,不能存放下一行。

二、二维数组元素的引用
*引用二维数组元素时必须带有两个下标。引用形式如下:

数组名[下标表达式1][下标表达式2]

例如,若有以下定义语句:

double  w[4」[2];
  • 则w[0][1],w[i][j].w[i+k][j+k]都是合法的数组元素引用形式,只是每个下标表达式的值必须是整数,且不得超越数组定义中的上、下界。下界为从0开始。
  • 注意:引用二维数组元素时,一定要把两个下标分别放在两个方括号内,例如,引用以上w数组元素时,不可以写成:w[0,1]、w[i,j]、w[i+k,j+k],这都是不合法的。两个下标要分开,不要串门,而且是常量表达式。

二、二维数组的初始化

不同的初始化,主要看花括号的个数与数组元素的区别,主要有四种初始化的选择。

  • 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)当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小。
  • (2)当初值的个数不能除尽时,则:第一维的大小=所得的商数+1

五、二维数组的定义和数组元素引用举例
例1: 通过键盘给2x3的二维数组输入数据,第一行赋1、2、3,第二行赋10、20、30,然后
按行输出此二维数组。
本题示例了引用二维数组元素、对二维数组进行输入和输出的基本方法。程序中用i作为
行下标,j作为列下标。程序如下:

#include

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");
	}
}

你可能感兴趣的:(c语言,开发语言,后端)