C - 指针问题 - 如何用值指针填充数组指向?

时间:2010-09-10 01:53:37

标签: c

我有一个功能

void add_car(char *car) {
    park.buffer[park.size] = car;
    park.size ++;
}

汽车是一个像“XYZ”的字符串。 Atm,它似乎将carpark缓冲区数组元素分配给一个地址。因此,如果我用10辆汽车填充阵列,我会收回10辆汽车,但每辆都是最新的汽车,因为汽车的地址被覆盖了。如何在carpark.buffer中填写汽车的实际价值。

总思维空间atm

3 个答案:

答案 0 :(得分:3)

假设park.bufferchar*的数组,您可能需要使用

park.buffer[park.size] = strdup(car);

请注意,这不可避免地会产生副本(如果您不希望对car进行进一步更改以影响park.buffer,则必不可少!)拥有< / em> park(意思是,完成后,您必须free从那里开始,因为strdup隐含地执行malloc [和{{1}当然也是; - )])。

顺便说一句,您需要在文件顶部strcpy(如果您还没有这样做)才能使用#include <string.h>

答案 1 :(得分:2)

要复制C中的“字符串”,您需要使用strcpy并且您不想将其复制到park.buffer的末尾,您可能希望将其复制到第0位。

答案 2 :(得分:1)

如果没有更多的背景,很难准确地说出你在做什么。但我认为park.buffer是一个指针数组。

  

因为汽车的地址被覆盖了

汽车的地址不会被覆盖。

此外,您应该非常小心如何使用add_car功能。如果你继续调用它,你可能会覆盖不属于你的内存。此外,您还要小心,因为您捕获其地址,所以传入此函数的内容不会被释放。

你是正确的=设置字符串的地址,而不是复制整个字符串。