gpt4 book ai didi

c - 简单的 C 函数的奇怪行为

转载 作者:行者123 更新时间:2023-11-30 18:32:23 27 4
gpt4 key购买 nike

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

enter image description here

但是当我将代码移至主函数时,一切都很好。我尝试在 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_* 函数内读取或写入哪些项目的任何策略,那么代码应该会更加清晰。

关于c - 简单的 C 函数的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14606141/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com