c - C 中的结构数组参数

标签 c arrays pointers structure

我对 C 还很陌生,现在正在上课,但在项目中遇到困难。我们在这个项目中有一个称为符号的结构。我们在这个项目中还有一个称为 Node 的结构。节点有一组符号。我想做的就是将属性 Node.symbols 设置为另一个符号数组,如下所示:

   int max = 256;
   Symbol symbols[max];
   Node node1;
   node1.syms = symbols;

错误:将“struct Symbol[256]”与“Struct Symbol *”类型进行比较时出现不兼容的类型

我真的不明白为什么它认为符号是一个指针,而对我来说它似乎是一个符号数组。这可能非常明显,但我无法修复它。

最佳答案

不能对数组使用赋值运算符=。您要么必须使用循环:

for (int i = 0; i < max; ++i)
{
    node1.syms[i] = symbols[i];
}

或使用memcpy:

memcpy(node1.syms, symbols, max * sizeof(symbols[0]));

顺便说一句,max 对于数组维度(或其他任何与此相关的内容)来说是一个不好的名称,因为它与 max() 的名称冲突函数/宏。

关于c - C 中的结构数组参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28866098/

相关文章:

c - iconv - 保留无法转换为 ascii 的字符

javascript - 如何使用 if 验证和 2 个 foreach 循环重构我的 angularjs 函数

javascript - 将二维数组合并为对象数组

c - 为什么我的结构和数组不起作用?

c++ - 通过指针访问三维数组

c - 已分配的内存块上的 calloc 是否会调用重复分配?

c - 构建 binutils 时使用了哪些配置选项?

c++ - 无法将十六进制数据转移到无符号长整型中

javascript - 如何将数组字符串转换为属性?

c - 带指针的二维数组中最常见的字符