二维数组内存空间的动态分配
在学习算法时,遇到了很多需要动态分配二维数组的的场景。鉴于知识储备比较薄弱,此处进行加强。
首先,强化二维数组的概念:
二维数组,其实就是一维数组。例如:
int a[3][4] = {{1, 3, 5, 7}, {9, 11, 13, 15}, {17, 19, 21, 23}};
其中,a是二维数组名,a数组有三行,即拥有三个行元素,a[0],a[1],a[2];每个行元素又可以看做是拥有四个元素的一维数组。而a[0]、a[1]、a[2]分别是这三个行元素的数组名。
所以在二维数组中,
a[i]=&a[i,0]
a=&(&a[0][0]),即二维数组名是地址的地址,必须经过两次解引用才能取到a[0][0]的值。
下面是生成杨辉三角的算法代码:
这里需要做一下记录:
为二维数组malloc内存空间时,int**这里申请到的是此二维数组需要的行元素的数量对应的内存空间。而*int所申请的空间是每一个行元素有多少个元素组成所需要的内存空间,也可以理解成每个行元素有多少列。

