从头学习C语言之二维数组
目录
- 二维数组:
- 语法:
- 二维数组存放方式:
- 二维数组的访问:
- 二维数组的初始化:
- 示例:
- 总结
二维数组:
引入一个想法: 一个变量:相当于一个点。 一维数组(也就是数组):点汇聚成为一条直线。 二维数组:直线汇聚成一个平面。 三维数组:平面汇聚成立体图形。
语法:
类型 数组名[常量表达式][常量表达式]
- int a[6][6];//6*6,6行6列
- char b[4][5];//4*5,4行5列
- double c[6][3];//6*3,6行3列
二维数组存放方式:
二维数组的访问:
- 数组名[下标][下标]
- a[0][0];//访问a数组中第一行第一列的元素
- b[1][3];//访问b数组中第二行第四列的元素
- c[3][3];访问c数组中第四行第四列的元素
- 同样要注意下标的取值范围,以防止数组的越界访问。
- —比如int a[3][4],其“行下标”的取值范围是0 ~ 2,“列下标”的取值范围是 0 ~ 3,超出任何一个下标的访问都是越界访问。(非常容易中招)
二维数组的初始化:
- 二维数组在内存中是线性存放的,因此可以将所有的数据写在一个花括号内:
- int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
- 为了更直观的表示元素的分布,可以用大括号将每一行的元素括起来:
- int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
- 或者
- int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
- 二维数组也可以仅对部分元素赋初值:
- int a[3][4]={{1},{5},{9}};
- 如果希望整个二维数组初始化为0,呢么直接在大括号里写一个0即可:
- int a[3][4]={0};
- C99同样增加了一种新特性:指定初始化的元素。这样就可以只对数组中的某些指定元素进行初始哈赋值,而未被赋值的元素自动初始化为0:
- int a[3][4]={[0][0]=1,[1][1]=2,[2][2]=3};
- 二维数组的初始化也能偷懒,让编译器根据元素的数量计算数组的长度。但只有第1维的元素个数可以不写,其他维度必须加上:
- int a[][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
示例:
例一:二维数组的舒服写法:
1 #include<stdio.h> 2 int main() 3 { 4 int a[3][4]={ 5 {1,2,3,4}, 6 {5,6,7,8}, 7 {9,10,11,12} 8 }; 9 int i,j; 10 for(i=0;i<3;i++) 11 { 12 for(j=0;j<4;j++) 13 { 14 printf("%d ",a[i][j]); 15 } 16 printf("\n"); 17 } 18 printf("\n"); 19 return 0; 20 }
例二:对前三行每一行的第一个元素赋初值,其他没有被赋值的自动补充为0:
1 #include<stdio.h> 2 int main() 3 { 4 int a[3][4]={{1},{2},{5}}; 5 //把前三行每一行的第一个元素赋初值,其他没有被赋值的自动补充为0。 6 //如果赋值的数,多于三个,后面的会报错,并且自动不算数。 7 //如果没有对数组进行赋值,则得出的结果为随机数。 8 int i,j; 9 for(i=0;i<3;i++) 10 { 11 for(j=0;j<4;j++) 12 { 13 printf("%d ",a[i][j]); 14 } 15 printf("\n"); 16 } 17 return 0; 18 } 1 #include<stdio.h> 2 int main() 3 { 4 int a[3][4]={{1},{2},{5}}; 5 //把前三行每一行的第一个元素赋初值,其他没有被赋值的自动补充为0。 6 //如果赋值的数,多于三个,后面的会报错,并且自动不算数。 7 //如果没有对数组进行赋值,则得出的结果为随机数。 8 int i,j; 9 for(i=0;i<3;i++) 10 { 11 for(j=0;j<4;j++) 12 { 13 printf("%d ",a[i][j]); 14 } 15 printf("\n"); 16 } 17 return 0; 18 }
例三:指定数组元素,其他元素自动补充为0:
1 #include<stdio.h> 2 int main() 3 { 4 int a[3][4]={[2][3]=1,[2][1]=8,[1][2]=5}; 5 int i,j; 6 for(i=0;i<3;i++) 7 { 8 for(j=0;j<4;j++) 9 { 10 printf("%d ",a[i][j]); 11 } 12 printf("\n"); 13 } 14 return 0; 15 }
例四:证明只有第一维可以不写数值:
1 #include<stdio.h> 2 int main() 3 { 4 int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};//只有第一维可以不写 5 int i,j; 6 for(i=0;i<3;i++) 7 { 8 for(j=0;j<4;j++) 9 { 10 printf("%d ",a[i][j]); 11 } 12 printf("\n"); 13 } 14 return 0; 15 }
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!
赞 (0)