c - 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 书。我很确定到目前为止我的假设是正确的,但现在我不知道要搜索/寻找什么来解决这个问题。
我对丑陋的解决方案或解决方法没有意见,但目前我只是坚持这一点。
感谢您的帮助。
解决方案
将name
成员从指针更改为数组。
typedef struct {
char name[40];
} ww_item ;
然后使用strcpy()
strcpy(ww_items[position].name, w);
不需要w
变量。
推荐阅读
- r - 使用R比较两个excel文件
- google-apps-script - Apps 脚本 - 复制和删除超过 6 个月的行
- list - 使用冒号冒号语法区分大小写的 Scala List 解包
- terminal - 键“m”将光标带到 iTerm2
- typescript - 使用 Google Calendar API 的类型(脚本)来帮助输入事件
- python - 从日志文件中获取特定部分
- java - 如何将参数传递给@Provide?
- python - Python 帮助 - 根据来自 2 个 DataFrame 的 2 个条件返回 DataFrame 值
- google-sheets - LIMIT 子句带参数
- flutter - 资产图像未更新,如何解决此问题