#include<stdio.h> #define M 3 #define N 4 intmain() { int a[M];//定义了数组长度为3的一维数组 int b[M][N];//定义了一个3行4列的二维数组 //全部赋初值 int a[2][3]={{10,20,30},{40,50,60}}; //按存储顺序全部赋初值 int a[2][3]={10,20,30,40,50,60}; //部分赋初值(按存储顺序) int a[2][3]={10,20,30}; //部分赋初值(按存储顺序) int a[2][3]={{10,20},{30}}; //省略行数赋初值 int a[][3]{{1,2,3},{4,5,6}{7,0,0}}; int x[][3]{10,20,30,40,50,60,70}; }
注意:
下标从0开始
使用部分赋初值的时候,为赋值的元素均为0.
省略行数赋初值时不能省略列数
行括号可以留空,但不能没有,跟for循环的;差不多意思
行括号间要有逗号,不能忘记
二维数组的遍历
很重要!!!!
官方背书:沿着某条搜索路线,依次对二维数组中的每个元素做一次访问
输出数组有两种方式一种是按行输出,一种是按列输出
例题:输出arr[3][4]的所有数组元素的值(按行输出)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#include<stdio.h> #define M 3 #define N 4 //输出arr[3][4]的所有数组元素的值(按行输出) intmain() { int arr[M][N] = { {1,4,7,10},{2,5,8,11},{3,6,9,12} }; int i = 0, j = 0; for (i = 0;i < M;i++) //行下标遍历 { for (j = 0;j < N;j++)//列下标遍历 { printf("%d\t", arr[i][j]); } printf("\n"); } return0; }
输出arr[3][4]的所有数组元素的值(按列输出)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#include<stdio.h> #define M 3 #define N 4 //输出arr[3][4]的所有数组元素的值(按列输出) intmain() { int arr[M][N] = { {1,4,7,10},{2,5,8,11},{3,6,9,12} }; int i = 0, j = 0; for (j = 0;j < N;j++)//列下标遍历 { for (i = 0;i < M;i++) //行下标遍历 { printf("%d\t", arr[i][j]); } printf("\n"); } return0; }