指针取消引用

Pointer dereferencing

本文关键字:引用 取消 指针      更新时间:2023-10-16
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 值。
我的问题是,如果我在不取消引用的情况下打印pnPtr,为什么第一个示例中的cout<<m_chString;没有像第二个示例中那样打印字符串的地址?
pnPtr不指向地址吗?

原因是 std::cout 会将 char * 视为指向 C 样式字符串(的第一个字符(的指针,并按此打印。

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

    cout << (void *) m_chString;

或者,如果您是C++粉丝,那么

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