[英]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.