#include <iostream>
#include <cstring>
using namespace std;

int main() {
    int len = 10;//定义一个10个单位的长度
    int* num = new int[len];//新建一个内存空间
    int count = 0;//用来记录存的数量
    while (1)//来个死循环
    {
        int n = 0;
        cin >> n;
        if (n == 0)
        {
            break;
        }
        if (count == len)//如果10存满了,就再继续申请空间
        {
            int* p = new int[len + 10];//申请新的数组,每次递增10个
            memcpy(p, num, len * 4);//把num中的数据copy到p中
            delete[] num;//释放num的内存
            num = p;//原指针指向新的内存块
            len = len + 10;//更新内存块大小
        }
        num[count++] = n;
    }
    for (int i = count-1; i >= 0; i--)
    {
        cout << num[i] << " ";
    }

    return 0;
}
// 64 位输出请用 printf("%lld")

这个我运用了动态内存分配,比较难理解,但是好处是不会拘泥于数组个数