2016-10-03 59 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++書籍,你應該不久就能理解它。 –