[英]bus error in simple Mac OSX C program
我正在编写一个简单的C程序来创建十二个色调矩阵。 代码可以编译,但是出现运行时错误“ Bus Error”。 在调试器中,它显示EXC_BAD_ACCESS
。
int main ()
{
int j,k,l;
int twelve[13][13];
void mat(int twelve[13][13]);
printf("input original tone row \n");
for(j=0;j<=11;j++)
{
scanf("%2i",&twelve[j][0]);
}
mat(twelve);
for(k=0;k<=11;k++)
{
for(l=0;l<=11;l++)
{
printf("%i ",twelve[l][k]);
}
printf("\n");
}
return 0;
}
void mat(twelve)
int twelve[13][13];
{
int j,k,l;
int temp;
/*inversion*/
for(j=1;j<=11;j++)
{
twelve[0][j] = 12 - twelve[j][0];
}
/*fill in columns*/
/*this sections seems to be what's crashing it */
for(k=1;k<=11;k++)
{
for(l=1;1<=11;l++)
{
temp = twelve[0][k] + twelve[l][0];
if(temp >= 12)
{
twelve[k][l] = temp - 12;
}
else
{
twelve[k][l] = temp;
}
}
}
}
mat()子例程的内循环条件中有一个错字。
这就是为什么我不喜欢'l'(el)作为索引的原因。
for(l=1;1<=11;l++)
您的意思是“ l <11”(el)而不是“ 1 <11”(一个)
1总是小于11,因此l(el)索引无限制地增加,当索引太大时会导致非法的内存访问。
从代码底部开始大约10行,您将获得以下语句:
{for(l=1;1<=11;l++)
应该是
{for(l=1;l<=11;l++)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.