int flage = 1;//这个定义的是一个全局变量
while (flage)
{
printf("\n按 w a s d 向上 向左 向右 向下 移动,按 q 键退出;\n");
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
printf("%d\t",arr[i][j]);
}
printf("\n");
}
printf("---------------\n");
printf("flage = %d\n",flage);
get_slide(flage);
printf("flage2 = %d\n",flage);
}
return 0;
}
void get_slide(flage) //不能传参 传入参数之后flage恒为1
{
int getchar(void);
char ch = getchar();
switch (ch)
{
case 'a':
case 'A':
move_left(arr);
printf("向左\n");
break;
case 'd':
case 'D':
move_right(arr);
printf("向右\n");
break;
case 'w':
case 'W':
move_up(arr);
printf("向上\n");
break;
case 's':
case 'S':
move_down(arr);
printf("向下\n");
break;
case 'q':
case 'Q':
flage = 0;
printf("退出\n");
break;
// default:
// break;
}
// printf("gf = %d\t",flage);
// printf("ch = %c",ch);
}
这个flage一直作为全局变量,也就是一直为1,尽管在get_slide()函数中,按q的时候将flage 的值进行改变,但由于他传入的是全局变量,所以他的值还全局变量的值。还得自己思考思考。