c - 将项目添加到C中的空数组并获取数组长度

标签 c arrays

我曾多次尝试解决这个问题,但每次都失败了。

我有一个数组

char *array[1024] = {};

现在我想向数组添加一个项目,并且还可以按数字访问这些项目

例如: array[0] 将是第一项 array[1] 将是第二个 array[2] 将是第三项

但我也想知道数组中有多少项,这样我就可以使用类似的东西

for(int i = 0; i <= totalitemsinarray; i++) {
    print(array[i]);
}

最佳答案

您无法更改 C 中数组的大小。但是,您可以分配一个足够大的数组,然后用条目填充它。首先,声明一个足够大小的数组,例如 1024。

char *array[1024];

然后声明一个变量fill,用于计算array中已使用的槽数。将其初始化为0,因为一开始使用了 0 个槽。然后,每次插入一个项目时,都会增加 fill:

array[fill++] = ...;
...
array[fill++] = ...;

确保您永远不会尝试向数组中插入超过 1024 个项目,C 不会为您检查这一点。

要获得更灵活的方法,请使用 malloc() 为数组分配内存,然后在数组满时定期使用 realloc() 扩大内存。如果以指数步长增加数组大小(例如,乘以 Φ = 0.5 + 0.5 √2 ≈ 1.61),则每个插入条目的摊销时间为 O(1)。

关于c - 将项目添加到C中的空数组并获取数组长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34425721/

相关文章:

c - 多线程应用程序在 Release模式下崩溃

c - 为什么 printf() 打印这样的东西?

c - gdb 脚本根据变量值隔离线程

javascript - 将字符串转换为数组,删除 + 字符

c - 二维数组的倾斜内存分配是否更有效?

我可以在VS2013中正式使用free()吗?

java - 卡在 NPE 将 Array.toString(object) 分配给类中的另一个数组上

python - 如何使用Python中的方程填充多维数组

ios - 在 Swift 中搜索数组对象

C语言编程