【发布时间】:2012-08-01 11:46:05
【问题描述】:
考虑一段代码
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; }
当我编译这个程序时
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 未指向“有效”元素时检测(抛出或检查)。 在上面的代码中,最后一个有效元素是 arrPtr[3]。
请不要回答“我也是”!
【问题讨论】:
-
你不能。只需以一种或另一种形式传递尺寸。例如。使用
std::vector而不是普通数组(并通过v.at(i)而不是v[i]访问它)。 -
@atzz oops 在发布后看到了您的评论..
-
请注意,如果您有一个值数组(不是动态分配的指针),则始终可以通过执行
sizeof(array)/sizeof(type_of_array)来获取大小。也就是说,您显然需要同质类型来计算它。