动态分配二维数组
2012-01-04 12:50
204 查看
众所周知,每一个二维数组有n行个二级指针指向数组的每一行,每一行有m个一级指针指向数组的每一个元素。因此,我们动态分配二维数组只要分配n个二级指针,n*m个一级指针就行了,先来看一个常用的方法:
但这个方法每次分配指针时都要调用(void)malloc(int)函数,在分配上浪费了时间,因此可以做如下简化:
但要注意,这两个方法在内存上的存储是有差别的。第一个每行里的每个元素在内存上是连续的,但每行之间并不一定连续,而第二种每行都是连续的。
int i,**p=(int**)malloc(row*sizeof(int)); for(i=0;i<row;i++) p[i]=(int*)malloc(column*sizeof(int));
但这个方法每次分配指针时都要调用(void)malloc(int)函数,在分配上浪费了时间,因此可以做如下简化:
int i,**p=(int**)malloc(row*sizeof(int)); p[0]=(int*)malloc(row*column*sizeof(int)); for(i=1;i<row;i++) p[i]=p[0]+i*column;
但要注意,这两个方法在内存上的存储是有差别的。第一个每行里的每个元素在内存上是连续的,但每行之间并不一定连续,而第二种每行都是连续的。
相关文章推荐
- 二维数组的动态分配
- 二维数组的动态分配
- 在C语言中实现动态分配二维数组【转自iTango】
- C++中如何动态分配二维数组
- 如何在C++中动态分配二维数组
- 转一篇关于二维数组动态分配的文章,可以结合链接的文章
- C 二维数组动态分配和释放 [转]
- 【数组与指针】如何在C/C++中动态分配二维数组
- C与C++动态分配二维数组
- 如何在C++中动态分配二维数组
- 二维数组动态分配空间
- 二维数组动态分配
- 从键盘输入行数m,列数n,从堆上动态分配一个m行,n列的int型二维数组,并从键盘
- c语言malloc()动态分配二维数组
- 二维数组的动态分配及参数传递(转)
- 二维数组的动态分配及参数传递
- 二维数组的动态分配及参数传递
- 二维数组的动态分配及参数传递
- 二维数组的动态分配(new)、初始化(…
- C++二维数组的动态分配