c++ - 指针取消引用

标签 c++

<分区>

char *m_chString="asd"; 
cout<<m_chString;//prints asd
cout<<*m_chString;//prints a


int nValue = 7;
int *pnPtr = &nValue;
cout<<*pnPtr;//prints 7
cout<<pnPtr;//prints the address of nValue

我举了两个例子,第一个是指针指向一个字符串,第二个是指针打印成一个int值。
我的问题是,为什么 cout<<m_chString;如果我要打印 pnPtr,第一个示例不会像第二个示例那样打印我的字符串的地址。没有取消引用它?
没有 pnPtr指向一个地址?

最佳答案

原因是 std::cout 会将 char * 视为指向 C 风格字符串(的第一个字符)的指针,并以此打印它。

您可以通过以下方式打印地址:-

    cout << (void *) m_chString;

或者如果你是 C++ 的忠实粉丝

    cout << static_cast <const void *> (m_chString);

关于c++ - 指针取消引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26603546/

相关文章:

c++ - 了解 glNormal3f

c++ - 当内存分配数不总是相同时如何检测内存泄漏?

c++ - 在 lambda 中包装模板化函数调用

c++ - 如何在C++中获得Antlr 4规则名称?

c++ - 如何覆盖为 Boost::Python 自动创建的文档字符串数据?

c++ - 在 C++ 应用程序代码中链接外部定义的静态函数

c++ - 如何在 Linux 中创建可通过 Screen 应用程序连接的 pty

c++ - boost::variant中的类holden的拷贝构造函数存在问题

c++ - 为什么 std::sort 不通过引用接受比较器?

c++ - Boost线程,如何检查线程是否仍在运行?