【发布时间】:2019-11-12 12:38:03
【问题描述】:
我的 C 代码有问题:
输入:整数数组[16]
(whished)输出:array2[4][4] 所以array2[0][1]-array2[0][3]中的前4个元素
我现在得到了这样的东西,但我不明白为什么它不起作用; 我知道 array[1] = *(array + 1);
如果某人能帮助我,那就太好了。
int write_from_state(int *state[][4])
{
encryption[0] = state[0][0];
encryption[1] = state[1][0];
encryption[2] = state[2][0];
encryption[3] = state[3][0];
encryption[4] = state[0][1];
encryption[5] = state[1][1];
encryption[6] = state[2][1];
encryption[7] = state[3][1];
encryption[8] = state[0][2];
encryption[9] = state[1][2];
encryption[10] = state[2][2];
encryption[11] = state[3][2];
encryption[12] = state[0][3];
encryption[13] = state[1][3];
encryption[14] = state[2][3];
encryption[15] = state[3][3];
return encryption;
}
我得到错误
警告:赋值使指针从整数而不进行强制转换 [-Wint-conversion] 状态[0][0] = msg[0] ;
【问题讨论】:
-
你确定
int *state[][4]这行吗?这一行有 2 个错误。此外,您绝对应该使用循环或memcpy来复制您的数组。 -
声明
int *state[][4]说state是一个由四个指向int的指针组成的数组。我想你的意思只是int state[][4]。你也返回int而不是int *。 -
你可能应该改用循环。
-
顺便说一句,警告消息与您显示的代码不匹配。提问时,请确保minimal reproducible example 复制了您提出的问题。并且您显示的错误消息是您显示的代码的复制粘贴(完整且完整)。
-
请注意,在 C 中,“初始化”的含义比“首次赋值”更具体。这更像是“指定一个对象在其存在时所具有的值”,而这不是您的代码正在做的事情。
标签: c arrays multidimensional-array initialization