Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在循环中中继二维阵列的状态_C_Multidimensional Array_Do While - Fatal编程技术网

C 在循环中中继二维阵列的状态

C 在循环中中继二维阵列的状态,c,multidimensional-array,do-while,C,Multidimensional Array,Do While,因为我的代码有点长,我听说我们可以问问题,只要它满足这个论坛的特定标准,我已经上传了我的 用文字表达我的问题,假设在mymain中执行compare函数后完成第一个循环,而循环我的一部分main,因为currentprogress[x][y]=在compare函数中使用finalpuzzle[x][y];当执行第二个循环时,用户选择的选项不会停留在currentprogress2D数组中,因此无论在currentprogress函数中变量choice记录了多少次输入,程序都不会继续 如何将2D数

因为我的代码有点长,我听说我们可以问问题,只要它满足这个论坛的特定标准,我已经上传了我的

用文字表达我的问题,假设在my
main
中执行
compare
函数后完成第一个循环,
循环我的一部分main,因为
currentprogress[x][y]=在
compare
函数中使用finalpuzzle[x][y]
;当执行第二个循环时,用户选择的选项不会停留在
currentprogress
2D数组中,因此无论在
currentprogress
函数中变量
choice
记录了多少次输入,程序都不会继续

如何将2D数组的状态从第一个循环传递到第二个循环,依此类推

谢谢大家!

在您的
main()
中,我注意到有一个关键字
do
,但没有
while
,它可以防止您屈曲

然后,为了能够恢复
状态的值
,有两种解决方案。第一个是返回
state
变量的值

char compare(char currentprogress[NROW][NCOL], char finalpuzzle[NROW][NCOL], char status) {
  // Your code
  return (status); 
}
第二个是传递指针参数以访问与“main”变量相同的内存区域


为了理解这种机制,我建议您在作用域上重新赋值,并通过复制发送参数。换句话说,
compare
中的变量
state
在发送时与
main
中的变量具有相同的值,但不一样,它是一个副本。

我没有跟随链接,但是:无论你听到什么-IMHO,最好忘记它。请读一读。如果您无法在一个适合问题文本的小示例中重现您的问题,则这是错误的问题平台。您正在通过值将
stat
传递给
compare
,因此函数将修改该变量的副本。将签名更改为传递指针或仅返回该值:
stat=compare(temp,store)。我还没有读你剩下的代码,太长了。@Scheff,很抱歉给你添麻烦。
void compare(char currentprogress[NROW][NCOL], char finalpuzzle[NROW][NCOL], char *status){
    *status = 'f'; // now your state variable has the same value in your main()
}