Chinaunix首页 | 论坛 | 博客
  • 博客访问: 32865
  • 博文数量: 17
  • 博客积分: 696
  • 博客等级: 上士
  • 技术积分: 170
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-14 16:59
文章分类

全部博文(17)

文章存档

2010年(4)

2009年(13)

我的朋友

分类: C/C++

2010-08-22 16:28:34

定义一维数组

int *p = ( int* )malloc( n * sizeof( int ) );

 

离散动态数组的定义

int **p = (int**)malloc(m*sizeof(int *));

for (int i=0;i

    p[i] = (int*)malloc(n*sizeof(int));

}

 

p只是保存了每个一维数组的首地址,这样的存储区是不连续的。释放离散动态数组:

for( int i=0;i

  free(p[i]);

}

 

free(p);

 

连续动态数组定义:

int *p=(int*)malloc(m*n*sizeof(int));

int **q=(int**)malloc(m*sizeof(int*));

for(int i=0;i

   q[i] = p+i*n;

}

首先分配连续的m*n的存储空间,然后q指向中间地址,相当于每一维德开始地址。

释放空间的时候直接释放p、q就可以了

free(q);

free(p);

 

连续的空间是支持空间扩展了,比如m*n数组扩展为k*j

int *p=(int *)realloc(k*j*sizeof(int));

int **q =(int**)realloc(k*sizeof(int*));

for(int i=0;i

  q[i]=p+i*j;

}

 

 

阅读(487) | 评论(1) | 转发(0) |
0

上一篇:转-GCC参数详解

下一篇:没有了

给主人留下些什么吧!~~

chinaunix网友2010-08-25 08:27:08

Download More than 1000 free IT eBooks: http://free-ebooks.appspot.com