-1

次のコードを実行しようとしていました。

#include <iostream>
using namespace std;

int main()
{
    int arr[4] = {1,2,3,4};
    int *p;
    p = arr;
    cout << "p=" << p << endl;

    char ch3[4] = {'c','d','e'};
    char *ptr;
    ptr = ch3;
    cout << ptr << endl;
    getchar();
    return 0;
}

ポインター p を出力すると、そこに格納されている配列 'arr' のアドレスが出力されますが、ポインター ptr を出力すると、そのアドレスではなく配列 ch3 が出力されます。なぜこれが起こっているのか知りたかったのです。

4

1 に答える 1

7

operator<<がオーバーロードされているため-const char*そのオーバーロードは、そのアドレスにある char 配列を出力します。

アドレス自体を表示するには、次のようにキャストする必要がありますvoid*

cout<<static_cast<void*>(ptr)<<endl;
于 2013-09-08T19:03:41.793 に答える