2016-10-03 62 views
0

请参阅下面的代码:阵列地址不可见

#include <iostream> 

class Boy { 
    char name[10]; 
    public: 
     void show() { 
      *name = 0; 
      std::cout << "\n" << &name[0]; 
     } 
}; 

int main() { 
    Boy b; 
    b.show(); 

} 

在这里,我们为什么不看名称的地址[0]。我也试过name,这本身就是地址。仍然我看不到地址,它返回空白屏幕。

回答

3

这是因为你使用char*过载operator<<,它将指针视为指向c字符串的指针。将您的指针投射到void*以便如此打印。

std::cout << "\n" << static_cast<void*>(&name[0]); 
+0

谢谢,但我是一个初学者,我不能理解! – samjoe

+0

我添加了固定代码 – krzaq

+0

没关系。继续阅读你的C++书籍,你应该不久就能理解它。 –