代码之家  ›  专栏  ›  技术社区  ›  Dominic Bou-Samra

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

c
  •  0
  • Dominic Bou-Samra  · 技术社区  · 15 年前

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

    汽车是一根类似“XYZ”的弦。Atm,它似乎将停车场缓冲区数组元素分配给一个地址。因此,如果我在数组中填充10辆车,我会得到10辆车,但是每辆车都是最新的,因为车的地址被覆盖了。我该如何填饱肚子停车场缓冲区一辆车的实际价值。

    自动取款机总计

    3 回复  |  直到 15 年前
        1
  •  3
  •   Alex Martelli    15 年前

    假设 park.buffer char* ,您可能要使用

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

    请注意,这不可避免地会导致 复制 (如果您不想进一步更改 car 停车缓冲区 !) 拥有 通过 park (意思是,完成后,您必须 free 从那开始,因为 strdup 隐式执行 malloc strcpy 当然也是;-)])。

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

        2
  •  2
  •   Mark Elliot    15 年前

    要在C中复制“字符串”,您需要使用 strcpy

        3
  •  1
  •   Brian R. Bondy    15 年前

    因为汽车的地址被改写了

    汽车的地址没有被覆盖。

    add_car 功能。如果你继续调用它,你可能会覆盖不属于你的内存。此外,您还需要注意,由于您正在捕获它的地址,因此传递给该函数的内容不会被释放。

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