배열 val 그것들을 초기화하기 전에. C++은 말하지 않는 한 비 정적 배열을 초기화하지 않으므로 $ DEITY는 그 안에 들어있는 내용을 알고 있습니다. 그리고 기술적으로, 거기에있는 것이 무엇이든 예외를 유발할 수 있습니다. x86 시스템에서 int의 경우 실제로는 그렇지 않지만 다른 곳에서는 가능합니다.
사용자가 20 개 이상의 숫자를 입력 할 수 있습니다. 이것은 좀 더 일반적인 문제의 특별한 경우에 불과합니다. 알 수없는 항목 수는 허용하지만 충돌없이 모두 수락 할 수는 없습니다.
미리 얼마나 많은 객체가 있는지 모르는 경우에는 벡터를 사용하십시오.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
std::vector<int> a;
int entry;
cin>>entry;
// Oh, yeah. This. You really, *really* want to check `cin`.
// Otherwise, if the user decided to type "i like cheese", you'd loop
// forever getting zeros while cin tried to parse a number.
// With the array, that'd typically cause a segfault near instantly.
// With a vector, it'll just eat up all your CPU and memory. :P
while (cin && entry != 42) {
a.push_back(entry);
cout << entry << "\n";
cin >> entry;
}
return 0;
}
Ermm ... 'i> 19' 전에 루프가 종료되고'a [i] '에 대한 액세스가 segfault가 될 수 있습니다. – arne
배열의 크기를 늘려야한다는 것을 의미합니까? – user2696751
@ Nbr44, 숫자가 42가 될 때까지 42 개의 요소가 아님. 아직도 ... – chris