c - 在C中使用数组时出错

标签 c arrays

int main() //task 10
{
    int num[9], i, counter = 0, minNum, maxNum = 0, sum = 0;
    for (i = 0; i <= 9; ++i)
    {
        scanf("%d", &num[i]);
        if (num[i] > maxNum)
        {
            maxNum = num[i];
            minNum = maxNum;
        }
        else if (num[i] < minNum)
            minNum = num[i];
        sum += num[i];
    }
    printf("minNum: %d, maxNum: %d\nThe average is:%d\n", minNum, maxNum, sum / 10);
    return 0;
}

尝试运行此程序时出现此错误: 运行时检查失败#2 - 变量“num”周围的堆栈已损坏。 我想知道我的阵列出了什么问题。

最佳答案

使用下面的代码,您将读取数组越界

for (i = 0; i <= 9; ++i)

在这种情况下,您只能访问 0 到 8 之间的元素。更改为i < 9 .

PS。逻辑上可能还有其他缺陷(检查一些评论)。这里的这个也很棘手

if (num[i] < minNum)

minNum未初始化,因此如果首先在循环中评估上述条件,您将由于读取未初始化的变量而得到未定义的行为。

关于c - 在C中使用数组时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33618637/

相关文章:

c - 如何使用 ncurses.h 库 "blink"在 C 中创建字符

C静态内联函数调用extern函数的动机

python - 围绕 Python 函数制作 Cython 包装器

c# - 在 C# 中,调整数组大小(在这种情况下增加其大小)会使用默认值初始化新段——这可靠吗?

c - 找出谁设置了 errno

c - 验证数组的输入

javascript - forEach in Array (in) 数组 JavaScript

javascript - 如何将json对象映射到数组

javascript - 从调用 forEach() 数组方法的方法返回。 JavaScript

arrays - 在 Swift 中从数组中获取随机元素