c语言中的多维数组

154 阅读2分钟

多维数组是由多个一维数组构成的,一般所用都的多维数组为二维数组,二维数组常称为矩阵,把为为数组写成行和列的排列形式,可以形象化的理解二位数组的逻辑结构,如下为定义一个二维数组及给其中的位置赋值

int arr[3][4];
 arr[0][2]=64;
 arr[1][3];

这是定义二维数组最直接的方法,但也有缺点:只能对个别位置进行赋值。而未赋值的位置的数是异常的,因此这种方式只用来对数组中的值进行修改,所以有另一种的赋值方式

int arr[2][3]={0,1,2,3}

这是最常用的数组赋值方式,在未赋值的位置的值默认为0,不存在数据异常的情况 需要注意的是多维数组是有多个一维数组嵌套而成,所以几维数组就用几个[][]来表示,不能在一个[]中写多个数组,如[2,3],这种表示是错位的 数组的内存存放是连续的,实际上存放在一行上,且是按行存放,第二行接在第一行的后面进行存放,所以如果使用指针的方法来遍历多维数组,只需在后面++就可以实现多维数组的遍历,普通的遍历方式如下

int arr[3][4]={1,2,3};
for(int i=0;i<3;i++){
for(int j=0;j<4;j++){
printf("%d ",arr[i][j]);

}printf("\n");
}

二位数组的表示可以简化,如arr[3][4]可以简化为arr[][4],只可以不写行,列一定要写,不然电脑无法得知一行有多少个元素 二位数组中有一道经典的例题就是杨辉三角,其过程如下

#include <stdio.h>
int main() {
	int yh[20][20];
	yh[0][0] = 1;
	int i;
	int j;
	for (int i = 0; i < 20; i++) {
		for (int j = 0; j <= i; j++) {
			if (j == 0 || j == i) {
				yh[i][j] = 1;
			}
			else {
				yh[i][j] = yh[i - 1][j] + yh[i - 1][j - 1];
			}
		}
	}
	for (i = 0; i < 20; i++) {
		for (j = 0; j <= i; j++) {
			printf("%d ", yh[i][j]);
		}printf("\n");
	}
	return 0;
}