我对 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/