C语言 根据输入动态扩充指针数组
本帖最后由 zohoChou 于 2022-5-5 21:30 编辑帮同学做作业时写的小玩意,没啥可讲的……
只是因为题目里面有一句要求不浪费内存惊到我了……
于是自己想了半天抠出来了下面的代码
#include <stdio.h>
#include <stdlib.h>
#define int_size sizeof(int)
int main(void)
{
int *p;
int count = 0;
p = calloc(1, int_size);
while (scanf("%d", p + count) && *(p + count) != 0)
{
p = realloc(p, (count + 2) * int_size);
if (p != NULL)
{
++count;
}
else
{
return 1;
}
}
for (int i = 0; i < count; ++i)
{
printf("%d ", *(p + i));
}
free(p);
return 0;
} 本帖最后由 zohoChou 于 2022-5-5 21:25 编辑
总而言之就是不断 realloc()
注,要求是当检测到0时停止,输入均为普通数字
呵呵 重新分配内存 ;www 有没想过你在节约的同时,其实更浪费呢,一直waitting 状态。。。 这样的方式开销并不小 效率低 可以参考一下容器vector扩容的方法,或者链表应该也行
zTATs 发表于 2022-5-6 10:13
可以参考一下容器vector扩容的方法,或者链表应该也行
感谢告知,新手入门C,正在学习中,还没学到……
会看的,谢谢告知! 用链表更好
页:
[1]