我想在运行时增长一个数组(不用macos预先指定长度)
我有以下问题
1.可以用数组来实现吗?
1.如果没有,我应该使用一个指针到整数?
我尝试了以下代码(并期望012
作为输出),但得到的是000
#include <stdlib.h>
#include <stdio.h>
int main()
{
int *arr = NULL;
size_t n = 0;
for (int i = 0; i < 3; ++i) {
arr = realloc(arr, (n + 1) * sizeof *arr);
arr[n++] = i;
printf("%d", *arr);
}
}
2条答案
按热度按时间xu3bshqb1#
大部分都在操作室。
每次只打印第一个元素。
可以用数组来实现吗?
不可以。在C语言中,数组一旦定义就不能改变大小。
但是,* 指针 * 分配和引用的内存大小可以更改。
qf9go6mv2#
重新分配数组的方法很好,尽管效率很低。没有得到预期输出的原因是输出了第一个元素3次。
如果您事先知道最终长度,建议一次性分配数组;在其他情况下,如果需要动态重新分配大型数组,建议使用按几何级数递增的大小进行重新分配:
下面是一个使用黄金分割率的例子: