b[i]为什么会超出数组范围
时间: 2023-12-21 16:03:32 浏览: 96
为什么MySQL使用B+Tree1
非常抱歉,我之前的回答有误。实际上,在主函数中`*s=hang(b[i])`这一行代码是有问题的。`b[i]`超出了数组`b`的范围,因为`i`的值在这里可以是0、1或2,而`b`数组只有3个元素,索引范围是0到2。
应该将代码修改为`*s=hang(b)`,这样就能正确地传递整个数组`b`给`hang`函数进行求和。
修正后的代码如下:
```c
#include <stdio.h>
#include <math.h>
int hang(int a[]);
int main()
{
int b[3], i, s[3];
for (i = 0; i < 3; i++)
{
scanf("%d", &b[i]);
}
for (i = 0; i < 3; i++)
{
s[i] = hang(b);
printf("行:s[%d]=%d\t\n", i + 1, s[i]);
}
return 0;
}
int hang(int a[])
{
int j, total;
total = 0;
for (j = 0; j < 3; j++)
{
total = total + a[j];
}
return total;
}
```
这样,代码就能正确地求和并打印出结果了。非常抱歉给您带来的困扰。
阅读全文