c++ - 为什么我的指针输出一个字符串而不是 C++ 中的内存地址?

标签 c++ pointers dynamic-arrays

<分区>

我正在研究一个使用指针的字符串类,但我只是难以理解我的 print 是如何工作的。功能在这里工作。具体来说,为什么 cout << pString输出字符串而不是它指向的动态数组的内存地址?我的理解是变量 pString 是一个指针。

class MyString
{
    public:
        MyString(const char *inString);
        void print();
    private:
        char *pString;
};


MyString::MyString(const char *inString)
{
    pString = new char[strlen(inString) + 1];
    strcpy(pString, inString);
}

void MyString::print()
{
    cout << pString;
}

int main( )
{
    MyString stringy = MyString("hello");
    stringy.print();
    return 0;
}

最佳答案

这是因为 <<运算符已重载以处理 char* 的情况并将其作为字符串打印出来。与地址相反(其他指针就是这种情况)。

我认为可以肯定地说这样做是为了方便 - 以便于打印字符串。

所以如果你想打印出地址,你应该把指针指向void* .

关于c++ - 为什么我的指针输出一个字符串而不是 C++ 中的内存地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7788639/

相关文章:

c++ - 清除布局而不删除小部件

c++ - 如何检查是否使用 malloc 或 new 分配了内存

C++:将类实例存储在分配的内存中

c - C语言中,指针访问的静态变量

data-structures - 有没有一种数学方法可以计算动态数组的最佳增长因子?

Delphi SetLength 自定义索引

c++ - 如何获取文件大小&文件名&文件起始地址?

C++ 代码比它的 C 等效代码慢?

java - 传递参数使指针来自整数,而不需要从 printf 进行强制转换调用

c - 需要知道如何在 c 中按空格解析单词。还需要知道我是否正确分配内存?