2012-07-18 87 views
3
int *i = new int(1); 
cout << i << endl; 

将打印整数的地址。字符数组的打印地址

char *c="cstring"; 
    cout << c << endl; 
    cout << &(*c) << endl; 

都将打印 “:字符串”。我想这种行为可以简单地通过IOstream库中的ostream& operator<< (ostream& out, const char* s);的实现来解释。

但是如果你真的想打印数据c的地址该怎么办?

回答

7
cout << reinterpret_cast<void*>(c) << endl; 

或只是

cout << (void*)c << endl; 
1

尝试铸造它作为一个const void*

cout << static_cast<const void*>(c) << endl; 
0

如何只

cout << &c << endl; 

为我工作:)

+2

不,它不。这会给你指针的地址。而不是这个指针指向的地址。 – 2012-07-18 11:48:29