我想找出存儲器中連續向量元素位置之間的「距離」。所以我嘗試下面的代碼連續向量元素的C++指針是自相矛盾的
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec(3);
for (int i = 0; i <= 1; i++)
{
cout << &vec[i+1] - &vec[i] << endl;
}
return 0;
}
結果是不出所料的兩個1
s。然而,當我嘗試打印個別指針:
vector<int> vec(3);
for (int i = 0; i <= 2; i++)
{
cout << &vec[i] << endl;
}
結果是
01485048
0148504C
01485050
所以連續兩個元素之間的差異應該是4
。看似與之前的結果相矛盾。這裏出了什麼問題?
1.你爲什麼要這麼做? 2.你見過'++'應用於指針嗎? –
@ n.m。 1.我想確保連續元素的指針也是連續的,這樣'*(&vec [i] +1)'指向'vec [i + 1]'。 2.不完全確定你的意思,但我認爲我將'++'應用於元素的索引而不是指針,儘管我認爲它也適用於指針。 – Vim
所以你已經找到了你想要驗證的內容。你驚訝於'(&vec [i] +1) - (&vec [i])== 1'嗎? –