当前位置 : 主页 > 网络编程 > 其它编程 >

二维数组和动态二维数组

来源:互联网 收集:自由互联 发布时间:2023-07-02
两种二维数组的区别C语言中,创建二维数组的方法有两种,一种是直接申请一片连续的空间,然后二维数组的数据依次存放在数组中。动态二维数组顾名思义,可以动态的扩展空间,用
两种二维数组的区别C语言中,创建二维数组的方法有两种,一种是直接申请一片连续的空间,然后二维数组的数据依次存放在数组中。动态二维数组顾名思义,可以动态的扩展空间,用户可以自己输入行

两种二维数组的区别

C语言中,创建二维数组的方法有两种,一种是直接申请一片连续的空间,然后二维数组的数据依次存放在数组中。动态二维数组顾名思义,可以动态的扩展空间,用户可以自己输入行和列来进行二维数组的创建。下面分别介绍两种数组的区别。

二维数组

二维数组是行优先存放的,是在内存中连续存放,创建的代码如下所示,是一个三行四列的二维数组。

int ar[3][4] = { 12,23,34,45, 56,67,78,89, 90,100,110,120 };

动态二维数组

动态二维数组是需要用户自己开辟空间的,需要用到二级指针,这个二级指针指向的空间存放的是指向每一行的指针。 《二维数组和动态二维数组》 如图所示,二级指针指向一片空间,里面存放的是指向每一行的指针,需要用malloc申请空间,使用完记得释放空间,防止内存泄漏。

int** br = nullptr;int row = 0, col = 0;printf("请输入两个数:\n");scanf_s("%d %d", br = (int**)malloc(sizeof(int*) * row);//申请一个列大小的空间if (nullptr == br) exit(0);int n = 1;for (int i = 0; i < row; ++i){ br[i] = (int*)malloc(sizeof(int*) * col);//br[i] = *(br+i)if (nullptr == br[i]) exit(0);}

释放空间的代码

for (int i = 0; i < row; ++i)//三列,每一列保存的是每一行的首地址{ free(br[i]);//先把每一行的地址释放掉br[i] = nullptr;}free(br);return 0;

上一篇:数据结构和算法—稀疏sparsearray数组
下一篇:没有了
网友评论