我有2个简单的函数,NxM数组中的一个函数输入不包括N + 2和M + 2。因此原始数组必须用零包围,另一个输出整个数组。当调用out函数时,我有一个非常奇怪的输出:
但是当我将代码移动到main函数时,一切都很好。我尝试在CodeBlocks和NetBeans中编译这段代码.Behaviour是一样的。 我不知道那里发生了什么。有人可以解释一下吗?
.....
int main()
{
int array[N+2][M+2]={{0}};
local_in(N,M,array);
local_out(N,M,array);
return 0;
}
void local_in(int len, int len2,int arr[][len2])
{
int i;
int j;
for(i = 1; i <= len; i++)
for(j = 1; j <= len2; j++){
scanf("%d",&arr[i][j]);
}
}
void local_out(int len, int len2,int arr[][len2])
{
int i;
int j;
for(i = 0; i < len+2; i++){
for(j = 0; j < len2+2; j++)
printf("%d ",arr[i][j]);
printf("\n");
}
}
答案 0 :(得分:4)
您的local_*
函数将数组作为int arr[][len2]
传递;但应改为使用int arr[][len2+2]
。
通常,如果您传递了正确的数组维度,那么代码应该更加清晰,然后实现在local_*
函数内读取或写入项目的任何策略。