for循环下标超出数组范围程序时如何执行?
时间:10-02
整理:3721RD
点击:
小弟愚昧,弱弱的问一个问题,如下面程序,for循环语句中下标超出数组个数范围,当i=4的时候,程序会如何执行?
void KeyDriver()
{
unsigned char i,j;
static unsigned char backup[4][4] = {
{1,1,1,1}, {1,1,1,1}, {1,1,1,1}, {1,1,1,1},
};
for (i = 0; i <= 4; i++)
{
for (j = 0; j <= 4; j++)
{
if (backup[j] != KeySta[j])
{
if (backup[j] == 0)
{
KeyAction(KeyCodeMap[j]);
}
backup[j] = KeySta[j];
}
}
}
}
void KeyDriver()
{
unsigned char i,j;
static unsigned char backup[4][4] = {
{1,1,1,1}, {1,1,1,1}, {1,1,1,1}, {1,1,1,1},
};
for (i = 0; i <= 4; i++)
{
for (j = 0; j <= 4; j++)
{
if (backup[j] != KeySta[j])
{
if (backup[j] == 0)
{
KeyAction(KeyCodeMap[j]);
}
backup[j] = KeySta[j];
}
}
}
}
数组也不过是内存中某一地址的一些数据。每一个数组中的数据对应内存中一个地址上的数据,超出了,就是下一个地址上的数据,不过,这个数据不知道是什么意义了。
要是用系统可能 会内存溢出,程序跑飞吧。
没有什么影响,继续往下执行
上面这个是按键检测函数,可是这样导致数码管都不显示了,更改那个i的范围后就正常了
非常感谢你的回复
