为什么这两行打印不同的地址?
vector<int> v1{ 12,2,34 };
printf_s("%d - 0x%p\n", v1[0], &v1[0]);
printf_s("%d - 0x%p\n",*v1.begin(), v1.begin());
Run Code Online (Sandbox Code Playgroud)
此地址中的值相同,但地址本身不同.这是否意味着同一个数组有两个副本?
编辑:在调试模式下它打印不同的地址,在发布模式下有相同的地址:)
Vit*_*meo 10
v1.begin()返回一个std::vector<int>::iterator,不一定是地址v1[0].事实上,尝试使用它打印出来printf给我一个警告:
警告:格式'%p'需要'void*'类型的参数,但参数3的类型为'std :: vector :: iterator`
除非您确定在您的特定标准库实现中并且当前的编译选项std::vector<int>::iterator是别名int*,否则这种比较毫无意义.