关于switch case 问题
#include "stdafx.h"#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
int main(int argc, char* argv[])
{
int array={0};
array=2;
array=2;
array=2;
int x,y,z,l;
system("color f4");
for(int i=0;i<25;i++)
{
for(int j=0;j<35;j++)
{
if(i==0)
array=5;
if(i==24)
array=5;
if(j==0)
array=5;
if(j==34)
array=5;
if(array==5)
printf("□");
else if(array==2)
printf("■");
else
printf("");
}
printf("\n");
}
while(1)
{
switch(array)
{
case 1:
array=1;
break;
case 2:
array=2;
break;
case 3:
array=3;
break;
case 4:
array=4;
break;
}
switch(array)
{
case 1:
array=0;
z--;
break;
case 2:
array=0;
z++;
break;
case 3:
array=0;
l--;
break;
case 4:
array=0;
l++;
break;
}
for(int i=0;i<25;i++)
{
for(int j=0;j<35;j++)
{
if(array==5)
printf("□");
else if(array==2)
printf("■");
else
printf("");
}
printf("\n");
}
Sleep(1000);
}
return 0;
}
switch这么用有什么问题吗 ? 编译没错误运行时提示内存不能为read 跟代码无关 你查查,应该有地方数组越界访问了 请问你代码 贴全了么?请问 xy在哪初始化了, 另外你确定 编译器没有报错,二维数组你用 数组的方式取访问 编译器 不会报错么?
类似这个位置
if(j==0)
array=5;
或者这个位置
if(j==34)
array=5; sp1ral 发表于 2017-12-27 10:43
你查查,应该有地方数组越界访问了
根据你的提示看了下switch里面数组确实会越界,不过我用if限制x,y,的值还是会提示内存不能为read,是我方法不对还是不能把switch这么用呀 新建word 发表于 2017-12-27 23:25
请问你代码 贴全了么?请问 xy在哪初始化了, 另外你确定 编译器没有报错,二维数组你用 数组的方式 ...
有定义呀system上面,我是用二维数组的方式访问的呀array【0】【y】我是这样访问的 BngThea 发表于 2017-12-26 21:10
跟代码无关
就是运行到switch那出错,楼下提示了下,哪里无线循环是会数组越界
页:
[1]