-1

我有 2 个简单的函数,NxM 数组中的一个函数输入不包括 N+2 和 M+2。所以原始数组必须被零包围,而另一个输出整个数组。当调用 out 函数时,我有一个非常奇怪的输出:

在此处输入图像描述

但是当我将代码移动到主函数时,一切都很好。我尝试在 CodeBlocks 和 NetBeans 中编译此代码。行为是相同的。我不知道那里发生了什么。有人可以解释一下吗?

.....
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");
  } 
}
4

1 回答 1

4

您的local_*函数将数组传递为int arr[][len2]; 但应该int arr[][len2+2]改用。

一般来说,如果您传递了正确的数组维度,然后实施任何关于在local_*函数内读取或写入哪些项目的策略,那么代码应该会更清晰。

于 2013-01-30T14:22:13.990 回答