【问题标题】:Array address not visible [duplicate]数组地址不可见[重复]
【发布时间】:2016-10-03 12:22:49
【问题描述】:

参考以下代码:

#include <iostream>

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

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

}

这里,为什么我们看不到name[0]的地址。我也试过name,它本身就是地址。还是看不到地址,还是黑屏。

【问题讨论】:

    标签: c++


    【解决方案1】:

    这是因为您为operator&lt;&lt; 使用了char* 重载,它将指针视为指向c 字符串的指针。将您的指针投射到 void* 以将其打印出来。

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

    【讨论】:

    • 谢谢,但是我是初学者我看不懂!
    • 我添加了固定代码
    • 没关系。继续阅读你的 C++ 书,你应该很快就能理解它。
    • @Sam 但实际上为什么它不显示地址,即使它把它当作指向 c 字符串的指针。它应该显示地址?
    • 不,它会尝试打印字符串。但是由于 c 字符串是零结尾的,并且您将零作为第一个字符,它会输出一个空字符串。
    猜你喜欢
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多