アドレス、ポインター、およびアンパサンドを理解していると思っていたのに、これが起こりました。簡単な方法で配列を作成し、そのアドレスをさまざまな方法で出力しようとすると...
string textArray[5] = {"test1", "test2", "test3", "test4", "test5"};
cout << "Address of string &array: " << &textArray << endl;
cout << "Address of string array: " << textArray << endl;
cout << "Address of string &array[0]: " << &textArray[0] << endl;
予想どおり、3 行すべてが同じメモリ アドレスを出力します。しかし、最初の行を次のように変更すると
string *textArray = new string[5] {"test1", "test2", "test3", "test4", "test5"};
cout << "Address of string &array: " << &textArray << endl;
cout << "Address of string array: " << textArray << endl;
cout << "Address of string &array[0]: " << &textArray[0] << endl;
&textArray のアドレスが違います!だから私の質問はなぜですか?通常、配列では、アドレスは最初の要素への単なるポインターです。しかし、これは動的に割り当てられた配列には当てはまりませんか? &textArray から返されるアドレスは何ですか?