我曾多次尝试解决这个问题,但每次都失败了。
我有一个数组
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/