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