-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 回答