主要回顾C语言中关于数组的定义以及初始化。基础知识如数组用[]
,初始化值用{}
将不会着重讲解。
一维数组
一维数组的定义与初始化是二维以及多维的基础。其中重点主要在初始化中。
一维数组的定义
1 2 3 4 5 6 7 8 9 10 11
|
int arr1[10],i;
for(i=0;i<sizeof(arr1)/sizeof(int);i++){ printf("arr1 %d ,",arr1[i]); } printf("\n");
|
一维数组的初始化
一维数组的初始化主要有以下三个特点以及一个注意点。特点主要围绕初始化时是否指定数组的长度
- 初始化指定长度的数组,如果初始化数组不够,全部用零自动填充
- 初始化一个未指定长度的数组。那么编译器会自动生成{}数字相同的长度
- 如果指定了长度的数组都初始化为零。可以使用{0}或者{相同长度的零}
注意:c语言的数组不支持动态数字,即必须从初始化开始时都固定,不同通过scanf这一类外部输入获取数组长度。
示例程序如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| int i=0; int arr2[10] = {1,2,3,5}; int arr3[] = {1,2,3,4,5,6,7,8,9,10}; int arr4[10] = {0}; for(i=0;i<sizeof(arr2)/sizeof(int);i++){ printf("arr2 %d ,",arr2[i]); } printf("\n"); for(i=0;i<sizeof(arr3)/sizeof(int);i++){ printf("arr3 %d ,",arr3[i]); } printf("\n"); for(i=0;i<sizeof(arr4)/sizeof(int);i++){ printf("arr4 %d ,",arr4[i]); } printf("\n");
|
二维数组
二维可以认为是一维数组的扩展。那么在扩展中,需要标识二维数组中的一维数组则采用{{},{}}
形式
二维数组的定义
1 2 3 4 5 6 7
| int mulArr1[3][4] = {0},k=0,l=0; for(k=0;k<3;k++){ for(l=0;l<4;l++){ printf("%d",mulArr1[k][l]); } printf("\n"); }
|
二维数组的初始化
二维数组拥有一维数组特点的同时,也有自身自己的特点。其中自身的特点包含以下四个方面。其中的主要内容是是否用{{},{}}
进行分割
- 数组初始化定义的数组的所有位置,使用
{{},{}}
分割
- 数组初始化定义的数组的所有位置,不使用
{{},{}}
分割。默认先填充行
- 数组初始化定义的数组的部分位置,使用
{{},{}}
分割,初始化其中的部分内容,未初始化部分采用0替代。
- 数组的初始化可以不用指定长度,多维数组以最长的作为最终的数组的长度。如:
a[][2]={1,2,3}
,那么数组长度为a[2][2]
注意:二维数组只能标识在列处,其原因是行可以自动计算,列无法计算出来。后续省略可以按照此原则。如在三维数组使用a[][2][2]
示例程序如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| int k=0,l=0; int mulArr2[2][2] ={{1,2},{3,4}}, mulArr3[2][2] = {1,2,3,4}, mulArr4[2][2] = {{1},{3}}, mulArr5[][2] = {1,3,4}, mulArr6[][2][2] = {1,2,3}; printf("mulArr2\n"); for(k=0;k<2;k++){ for(l=0;l<2;l++){ printf("%d",mulArr2[k][l]); } printf("\n"); }
printf("mulArr3\n"); for(k=0;k<2;k++){ for(l=0;l<2;l++){ printf("%d",mulArr3[k][l]); } printf("\n"); }
printf("mulArr4\n"); for(k=0;k<2;k++){ for(l=0;l<2;l++){ printf("%d",mulArr4[k][l]); } printf("\n"); }
printf("mulArr5\n"); for(k=0;k<2;k++){ for(l=0;l<2;l++){ printf("%d",mulArr5[k][l]); } printf("\n"); }
|
多维数组
多维数组的本质还是在一维数组上的扩展,数组中嵌套了数组。按此理解,基本没啥问题。