请各位大神们帮我理解下这段话,来自《C++ primer》
The value stored in a pointer can be in one of four states:
1. It can point to an object;
2. It can point to the location just immediately past the end of an object;
3. It can be a null pointer,indicating that it is not bound to any object;
4. It can be invalid; values other than the preceding three are invalid.
重点讲解第2点和第4点,3Q~ c++ pointer 指针 primer object
[解决办法]
第二点应该是刚刚越过某一对象的下一地址,估计类似于迭代器里的end()返回的值吧
第四点看上去怪怪的,猜测有两种解释,一个就是类似于第二点,指向某一对象尾地址后紧接的地址(这个地址和指针的定义肯定一般不符,是invalid的);另一个会不会是指new和delete操作符,当delet一个指针p之后,删除了p所指向的动态对象,但是指针内存储的地址依然存在,所以这时候该地址的值就是invalid的
[解决办法]
第二点感觉是说悬垂指针呢
[解决办法]
先去看下中文版是怎么说的。
[解决办法]
个人理解
1. 指向一个对象, 这是最通常的用法
2. 第二种意思是指向容器中最后一个元素的下一个位置,这在STL 容器的 iteration 是最常见的,例如:
vector<int> vecInt;
vecInt.push_back(1);
vecInt.push_back(2);
for(vector<int>::iterator iter = vecInt.begin(); iter != vecInt.end(); ++iter)
{
...
}