abu*_*amq 1 c++ arrays null pointers
考虑一段代码
int main(int argc,char* argv[]){
int *arrPtr = new int[4];
for (int i=0;i<4;i++)
arrPtr[i]=i*2;
for (int i=0;i<10;i++){
arrPtr++;
cout<<"arrPtr ["<<i<<"]\t"<<*arrPtr<<endl;
}
cout<<endl;
return 0; }
Run Code Online (Sandbox Code Playgroud)
当我编译这个程序
g ++ main.cpp -o main && ./main
它给了我
arrPtr [0] 2 arrPtr [1] 4 arrPtr [2] 6 arrPtr [3] 0 arrPtr [4] 135145 arrPtr [5] 0 arrPtr [6] 0 arrPtr [7] 0 arrPtr [8] 0 arrPtr [9] 0
我希望能够在arrPtr未指向"valid"元素时检测(抛出或检查).在上面的代码中,最后一个有效元素是arrPtr [3].
请不要"我太"的答案!
用一个vector.
int main()
{
std::vector<int> a(4);
for (size_t i = 0; i < 4; ++i)
a[i] = i * 2;
for (size_t i = 0; i < 10; ++i)
std::cout << i << ": " << a.at(i) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
结果:
0: 0
1: 2
2: 4
3: 6
terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check
Aborted
Run Code Online (Sandbox Code Playgroud)