吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2211|回复: 7
收起左侧

[C&C++ 原创] C语言 根据输入动态扩充指针数组

[复制链接]
zohoChou 发表于 2022-5-5 21:23
本帖最后由 zohoChou 于 2022-5-5 21:30 编辑

帮同学做作业时写的小玩意,没啥可讲的……
只是因为题目里面有一句要求不浪费内存惊到我了……


于是自己想了半天抠出来了下面的代码

[C] 纯文本查看 复制代码
#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:24
本帖最后由 zohoChou 于 2022-5-5 21:25 编辑

总而言之就是不断 realloc()

注,要求是当检测到0时停止,输入均为普通数字
armbian 发表于 2022-5-5 22:08
kk159 发表于 2022-5-5 22:43
有没想过你在节约的同时,其实更浪费呢,一直waitting 状态。。。
FZC 发表于 2022-5-6 10:06
这样的方式开销并不小 效率低
zTATs 发表于 2022-5-6 10:13
可以参考一下容器vector扩容的方法,或者链表应该也行
 楼主| zohoChou 发表于 2022-5-6 20:51
zTATs 发表于 2022-5-6 10:13
可以参考一下容器vector扩容的方法,或者链表应该也行

感谢告知,新手入门C,正在学习中,还没学到……
会看的,谢谢告知!
wycdd 发表于 2022-5-7 22:58
用链表更好
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-28 22:18

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表