首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C-指针问题--如何用指针所指向的值填充数组?

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

Stack Overflow用户
提问于 2010-09-10 09:53:37
回答 3查看 791关注 0票数 0

我有一个函数

代码语言:javascript
复制
void add_car(char *car) {
    park.buffer[park.size] = car;
    park.size ++;
}

car是一个类似于"XYZ“的字符串。Atm,它似乎将停车场缓冲区数组元素分配给一个地址。因此,如果我用10辆汽车填充数组,我会得到10辆汽车,但每一辆都是最新的一辆,因为汽车的地址被覆盖了。如何用一辆汽车的实际价值填充我的carpark.buffer?

完全思维空白自动取款机

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-10 09:59:16

假设park.buffer是一个char*数组,您可能希望使用

代码语言:javascript
复制
park.buffer[park.size] = strdup(car);

请注意,这将不可避免地创建一个副本(如果您不希望对car的进一步更改影响park.buffer,则是必不可少的!)由park拥有(这意味着,完成后,您必须从那里free它,因为strdup当然也隐式地执行mallocstrcpy;-))。

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

票数 3
EN

Stack Overflow用户

发布于 2010-09-10 09:56:37

要在C中复制一个“字符串”,你需要使用strcpy,而且你不想把它复制到park.buffer的末尾,你可能想把它复制到第0个位置。

票数 2
EN

Stack Overflow用户

发布于 2010-09-10 09:57:29

在没有更多上下文的情况下,很难确切地说出你在做什么。但我假设park.buffer是一个指针数组。

,因为car的地址已被覆盖

没有覆盖car的地址。

此外,对于如何使用add_car函数,您应该非常小心。如果你一直在调用它,你可能会覆盖不属于你的内存。此外,您还需要注意传递给此函数的内容不会被释放,因为您正在捕获它的地址。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3681832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档