分段故障
include using namespace std; int main() { int a,b[a],total=0; cin>>a; for(int i=0;i>b[i]; total=total+b[i]; } cout< 请帮我看看为什么这段代码是分段错误1> Sombrero Chi..:因为a在构建的那一刻b没有初始化,我们不知道有多大b.a之后通过用户输入设置值不再cin对大小有任何影响b. 要使此代码段起作用,您必须交换声明: int a = 0; int total = 0; cin>>a; int b[a]; 但是,此代码非常难以移植,因为可变长度数组仅是GCC扩展. 如果你想要一个可扩展的数组,你应该使用std::vector: std::vector b; int a = 0; int total = 0; cin >> a; b.resize(a); for(int i = 0;i >b[i]; total=total+b[i]; } 一定要#include . 请注意cin,两种情况下提取都可能失败.您应该为此添加错误检查. 最后注意:不要使用using namespace std;,习惯写作std::.
请帮我看看为什么这段代码是分段错误
因为a在构建的那一刻b没有初始化,我们不知道有多大b.a之后通过用户输入设置值不再cin对大小有任何影响b.
a
b
cin
要使此代码段起作用,您必须交换声明:
int a = 0; int total = 0; cin>>a; int b[a];
但是,此代码非常难以移植,因为可变长度数组仅是GCC扩展.
如果你想要一个可扩展的数组,你应该使用std::vector:
std::vector
std::vector b; int a = 0; int total = 0; cin >> a; b.resize(a); for(int i = 0;i >b[i]; total=total+b[i]; }
一定要#include .
#include
请注意cin,两种情况下提取都可能失败.您应该为此添加错误检查.
最后注意:不要使用using namespace std;,习惯写作std::.
using namespace std;
std::