簡體   English   中英

簡單C函數的奇怪行為

[英]Strange behavior with simple C function

我有2個簡單函數,NxM數組中的一個函數輸入不包括N + 2和M + 2。 因此,原始數組必須用零包圍,其他數組必須輸出整個數組。 當調用out函數時,我得到一個非常奇怪的輸出:

在此處輸入圖片說明

但是,當我將代碼移至main函數時,一切都很好。 我嘗試在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");
  } 
}

您的local_*函數將數組作為int arr[][len2]傳遞; 但應改用int arr[][len2+2]

通常,如果在周圍傳遞了正確的數組維,然后在local_*函數中實施了關於要讀取或寫入項目的任何策略,則代碼應該更加清晰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM