C语言中实现数组的动态增长

jackxiang 2008-12-9 16:14 | |
在c语言中实现数组的动态增长
原理:在c语言中数组下标访问可以看成指针偏移访问
1、对表进行检查,看看它是否真的已满
2、如果表确实已满,使用realloc()函数扩展表的长度,
并进行检查,确保realloc()操作成功进行。
3、在表中增加所需要的项目。
代码如下:

int current_element=0;
int total_element=128;
char *dynamic=malloc(total_element);
char *ptr;

void add_element(char c)
{
if(current_element==total_element-1)
{
  total_element *=2;
  ptr=(char*)realloc(dynamic,total_element);
  if(ptr==NULL)
  {
   printf("can't expand the table!\n");
   return -1;
  }
  else
   dynamic=ptr;  
}
current_element++;
dynamic[current_element]=c;
}
注:在实践中,不要把realloc()函数的返回值直接赋给字符指针,
如果realloc()函数失败,它会使该指针的值变成NULL,这样就无法
对现有的表进行访问。

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/1479/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]