考虑一下下面的代码:
#include
#include
using namespace std;
int main()
{
vector
for (int i = 0; i < 10; i++)
{
v.push_back(i); //加入一些元素
}
int* p = &v[3];
cout << "值为" << (*p) << "地址" << p << endl;
for (int i = 0; i < 100; i++)
{
v.push_back(i * 10); //再次加入一些元素
}
cout << "值为" << (*p) << "地址" << p << endl;
return 0;
}
这段代码的输出为:
值为3地址0073B0EC
值为-572662307地址0073B0EC
在这段代码中我们首先创建了一个包含10个元素的vector,保存一个指向3的指针。再次添加一些元素之后,地址没有发生变化而值却消失了。
原因是当我们再次想vector中添加元素之后,位置3的元素已经不再这个地址上了。
当我们把int*p=&v[3];改成int &p=v[3];效果也是一样的;
#include
#include
using namespace std;
int main()
{
vector
for (int i = 0; i < 10; i++)
{
v.push_back(i); //加入一些元素
}
int& p = v[3];
cout << "地址" << p << endl;
for (int i = 0; i < 100; i++)
{
v.push_back(i * 10); //再次加入一些元素
}
cout << "地址" << p << endl;
return 0;
}
输出结果为:地址3
地址-572662307
可以看出来 引用的效果也是一样的。
来源: