C++で配列とポインタ、メモリの関係について勉強しているのですが、分からないことがあり質問させていただきます。このサイトによると、「宣言した配列array
の配列名array
のアドレスは、配列の先頭の要素array[0]
のアドレスと同じ」とのことで、例を見ると確かにそうなっているようですが、私の方で試してみると、以下のように違う結果が得られました:
コード
#include <bits/stdc++.h> using namespace std; int main(){ vector<int> arr(3); cout << "arr:" << &arr << endl; cout << "arr.at(0):" << &arr.at(0) << endl; cout << "arr.at(1):" << &arr.at(1) << endl; cout << "arr.at(2):" << &arr.at(2) << endl; }
結果
arr:0x7ffe28ee23f0 arr.at(0):0x5559c8539e70 arr.at(1):0x5559c8539e74 arr.at(2):0x5559c8539e78
arr
のアドレス値が0x7ffe28ee23f0
なのに対し、arr.at(0)
のアドレス値は0x5559c8539e70
と、全く違います。
どういうことでしょうか?ご回答よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/06 03:32
2021/04/06 03:41 編集
2021/04/06 04:08 編集