gpt4 book ai didi

c - c中的 vector 复制

转载 作者:太空宇宙 更新时间:2023-11-04 01:38:23 25 4
gpt4 key购买 nike

我如何在 c 中定义一个像 vector 一样工作的数组?该数组应采用任意数量的值。它可以取 0 个值或 10 个值或 100 个值。

下面的代码有效,但给我一个堆栈已损坏的运行时错误。

int i = 0;
int* aPtr = &i;
int* head = aPtr;
for(i=0;i<6;i++){
(*aPtr)=i;
aPtr++;
}

同样,我如何使用 char* str 来获取任意数量的字符,后跟空字符以构成一个字符串?

面试练习:)

最佳答案

在 C 中有很多方法可以做到这一点,具体取决于您的要求,但是您说的是“任意数量的值”(通常意味着内存中可以容纳的数量)。这通常是使用 realloc 动态增加数组的大小来完成的。随着数组的增长,您还需要保留一些关于数组大小的簿记信息。

void
store (vector_t * v, int idx, int value)
{
if (v->size < idx) {
v->size = idx * 2;
v->data = realloc(v->data, v->size);
}
v->data[idx] = value;
}

这被标记为“作业”,我留下了一些细节需要填写,例如 vector_t 的定义。

关于c - c中的 vector 复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10303270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com