Bootstrap

c笔记(第六天)二维数组

二维数组

#include <stdio.h>
/*
二维数组概念:二维数组中的每个元素是类型相同的一维数组(数组的数组)
基本格式:类型说明符 数组名[常量表达式1][常量表达式2];常量表达式1为行,常量表达式2为列
如 int a[3][4]={{},{},{}};即为定义了一个有3个元素的二维数组
	0	1	2	3
0	0,0	0,1	0,2	0,3
1	1,0	1,1	1,2	1,3
2	2,0	2,1	,22	2,3
以上为该数组下标,逻辑结构是矩阵但是内存结构是连续的
多维数组基本格式 数组名 [表达式1][表达式2]...[表达式n];
*/
int main()
{
	int i = 0, j = 0;
	//初始化方式一 分行赋初值
	int nums0[3][3] = { {1,2,3},{1,2,3},{1,2,3} };
	//初始化方式二 按排序赋值
	int nums1[3][3] = { 1,2,3,1,2,3,1,2,3 };
	//初始化方式三 对部分元素赋值
	int nums2[3][3] = { 1,2 };//第一行第一个和第二个
	int nums3[3][3] = { {1},{2},{3} };//每行第一个
	//其余默认赋值为0
	//初始方式四 全部初始化为0
	int nums4[3][3] = {};
	//访问赋值要用双循环
	for (i = 0; i < 3; i++) 
	{
		for (j = 0; j < 3; j++) 
		{
			printf("&numd0[%d][%d]=%p,nums0[%d][%d]=%d ",i,j,&nums0[i][j],i,j,nums0[i][j]);//打印指针地址值%p,验证数组的内存连续性,打印的为16进制数,一个int四个bit
		}
		printf("\n");
	}
	printf("%p\n", nums0);
	printf("%p\n", nums0[0]);
	//二维数组名字为整个二维数组内存起始地址,也是二维数组中第一个子数组内存起始地址
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			printf("numd0[%d][%d]=%d,nums1[%d][%d]=%d ", i, j, nums0[i][j], i, j, nums1[i][j]);
		}
		printf("\n");
	}
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			printf("sum[%d][%d]= %d ", i, j, nums0[i][j] + nums1[i][j]);
		}
		printf("\n");
	}
	return 0;
}

;