在c语言中实现数组的动态增长
原理:在c语言中数组下标访问可以看成指针偏移访问
1、对表进行检查,看看它是否真的已满
2、如果表确实已满,使用realloc()函数扩展表的长度,
并进行检查,确保realloc()操作成功进行。
3、在表中增加所需要的项目。
代码如下:
如果realloc()函数失败,它会使该指针的值变成NULL,这样就无法
对现有的表进行访问。
原理:在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()函数的返回值直接赋给字符指针,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()函数失败,它会使该指针的值变成NULL,这样就无法
对现有的表进行访问。
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/1479/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
评论列表