首页 > 解决方案 > 拜托,有人能告诉我这段代码有什么问题吗?

问题描述

拜托,有人能告诉我这段代码有什么问题吗?

#include <iostream>
using namespace std;
int main() {
    int a[3], i;
    for(i = 0; i <= 3; i++ )
        {
            a[i] = 0;
            cout << "i = " << i << endl;
        }
    return 0;
}

标签: c++for-loopinfinite-looplocal-variablesoff-by-one

解决方案


这段代码的数组长度只是3for 循环执行4次数,因为循环从 0 到 3 执行。 的值i将如下所示:

i = 0
i = 1
i = 2
i = 3

由于数组a[3]长度为 3,但您尝试将4元素放入其中,当然会显示错误:

*** stack smashing detected ***: terminated
Aborted (core dumped)

修复

尝试更改数组长度或循环条件。


推荐阅读