首页 > 解决方案 > C 添加对数组的引用,而不是值

问题描述

我是 C 新手,从来没有用非 OOP 语言做过任何事情。

我有一个结构数组。它对类来说是全局的,我解析一个 json,结果以上述数组结尾。我基于为每个条目提供一个属性的结构创建一个对象 (?)。添加项目后,数组在所有位置上都具有相同的值。

我确实记得 C 在值和指针/引用方面很棘手,所以我做了一个小测试,看看数组是否真的只接受了引用:

typedef struct  {
    char* name;
} ww_item ;

char nameW[40];

// iterating through json {
// strcpy(nameW, data);

    ww_item w = { nameW };

    ww_items [ position ] = w;

    strcpy(nameW, "d"); //replaces the "Hello" with "d" in all previous ww_items

显然确实如此,这就解释了为什么我的数组最终会重复添加到其中的最后一个元素,而不是列出我添加到其中的所有不同字符串。

我找不到关于这方面的任何简短信息,不幸的是,我的截止日期太近了,现在无法阅读整本 C 书。我很确定到目前为止我的假设是正确的,但现在我不知道要搜索/寻找什么来解决这个问题。

我对丑陋的解决方案或解决方法没有意见,但目前我只是坚持这一点。

感谢您的帮助。

标签: carrayspointersreference

解决方案


name成员从指针更改为数组。

typedef struct  {
    char name[40];
} ww_item ;

然后使用strcpy()

strcpy(ww_items[position].name, w);

不需要w变量。


推荐阅读