【发布时间】:2017-12-29 19:41:17
【问题描述】:
这可能是很容易解决的问题。我不知道我做错了什么,请帮助这个超级简单的代码。
#include <iostream>
using namespace std;
int main()
{
int arraysize, i, a[arraysize], n, j;
cout << "array size";
cin >> arraysize;
for(int i=0, j = arraysize; i < arraysize, j > 0; i++, j--){
a[i] = j;
cout << "a[" << i << "] = " << a[i] << endl;
}
}
当执行这个程序时,它会输出数组的 5 个值,然后我得到一个分段错误。我不知道如何解决此问题和\或如何正确执行此类问题。任何帮助表示赞赏,谢谢。
【问题讨论】:
-
arraysize在您声明数组a[arraysize]时保存垃圾值。 -
Could not 使用 GCC 复制。不要使用 VLA 并在使用变量之前对其进行初始化。
-
正如@AditiRawat 所说,
arraysize将垃圾存放在第一次使用的地方。此外,int a[arraysize]不是有效的 C++,即使在arraysize中有有效值。一些编译器允许将其作为扩展,但至少应该给你一个警告,表明你所做的不是 kosher。
标签: c++ arrays segmentation-fault