第八章
二维数组
8.1二维数组的定义
#include <stdio.h>
#define M 3
#define N 4
int main(void){
int a[M];//定义了数组长度为3的一维数组
int b[M][N];//定义了一个三行4列的二维数组,相当于3个数组长度为4的一维数组
return 0;
}
8.2二维数组的存储
#include <stdio.h>
#define M 3
#define N 4
int main(void){
int a[M];//定义了数组长度为3的一维数组
int b[M][N];//定义了一个三行4列的二维数组,相当于3个数组长度为4的一维数组
printf("总字节数:%d\n",sizeof(b));//48
return 0;
}
8.3二维数组的初始化
8.4二维数组的遍历
1.按行遍历
#include <stdio.h>
#define M 3
#define N 4
int main(void){
int a[M] = {10,20,30};
/*
for(int i=0;i<M;i++){
printf("%d\n",a[i]);
}//一维数组的遍历
*/
int b[M][N] = {{1,4,7,10},{2,5,8,11},{3,6,9,12}};
//按行遍历,先对行进行for循环
for(int i=0;i<M;i++){//行下标遍历
for(int j=0;j<N;j++){//列下标遍历
printf("%d\t",b[i][j]);
}
printf("\n");
}
return 0;
}
2.按列遍历
#include <stdio.h>
#define M 3
#define N 4
int main(void){
int a[M] = {10,20,30};
/*
for(int i=0;i<M;i++){
printf("%d\n",a[i]);
}//一维数组的遍历
*/
int b[M][N] = {{1,4,7,10},{2,5,8,11},{3,6,9,12}};
//按行遍历,先对行进行for循环
for(int j=0;j<N;j++){//行下标遍历
for(int i=0;i<M;i++){//列下标遍历
printf("%d\t",b[i][j]);
}
printf("\n");
}
return 0;
}
8.5二维数组作为函数参数
#include <stdio.h>
#define M 3
#define N 4
void output(int b[M][N],int row,int column);
int main(void){
int arr[M][N] = {{1,4,7,10},{2,5,8,11},{3,6,9,12}};
output(arr,2,2);//函数调用,输出前两行,每一行只输出前两列的数
return 0;
}
//函数功能:按行输出所需要的二维数组的元素
void output(int b[M][N],int row,int column){
for(int j=0;j<row;j++){//行下标遍历
for(int i=0;i<column;i++){//列下标遍历
printf("%d\t",b[i][j]);
}
printf("\n");
}
}