C++ 为什么向量';s随机访问迭代器与指针提供相同的内存地址?

C++ 为什么向量';s随机访问迭代器与指针提供相同的内存地址?,c++,pointers,vector,stl,iterator,C++,Pointers,Vector,Stl,Iterator,请注意,地址每次都是相同的,问题是为什么?您得到的是同一对象的地址it,那么您每次都会得到相同的地址。迭代器指向的元素会更改,但迭代器本身的地址(it是一个对象,并且有自己的地址)不会更改 指针变量也是一样的,如果你得到的是指针本身的地址。例如 0x7fff6667cdf0 7 0x7fff6667cdf0 14 0x7fff6667cdf0 15 0x7fff6667cdf0 16 int*p; 大小; 对于(p=v.data(),s=0;s

请注意,地址每次都是相同的,问题是为什么?

您得到的是同一对象的地址
it
,那么您每次都会得到相同的地址。迭代器指向的元素会更改,但迭代器本身的地址(
it
是一个对象,并且有自己的地址)不会更改

指针变量也是一样的,如果你得到的是指针本身的地址。例如

0x7fff6667cdf0 7 0x7fff6667cdf0 14 0x7fff6667cdf0 15 0x7fff6667cdf0 16
int*p;
大小;
对于(p=v.data(),s=0;s难道我不明白。p是递增的,为什么它是一样的?@ProtoType指针指向的地址会改变,但指针本身的地址(指针是一个对象,有自己的地址)不会改变。哦!好的,是的,指针本身有自己的地址谢谢@songyunanyao
0x7fff6667cdf0 7 0x7fff6667cdf0 14 0x7fff6667cdf0 15 0x7fff6667cdf0 16
int* p;
size_t s;
for (p = v.data(), s = 0; s < v.size(); s++, p++)
{
    cout <<&(p)<<" ";
    cout<<(*p)<<" ";
}