考虑以下示例
我想打印"hello"
的地址,而不是ptr
#include<iostream>
using namespace std;
int main()
{
char *ptr = "HELLO";
cout<<"VALUE OF ptr"<<ptr;
cout<<"ADDRESS OF ptr"<<&ptr;
cout<<"WANT TO PRINT ADDRESS OF STRING HELLO";
return 0;
}
答案 0 :(得分:3)
大多数类型的<<
运算符打印右操作数的值。 <<
的{{1}}运算符的不同之处在于它打印char*
值指向的字符串;它取消引用指针,然后遍历字符串的字符,打印每个字符,直到它到达终止char*
空字符。
要打印指针值而不是指向的值,只需将其转换为'\0'
,因为void*
<<
打印实际指针值:
void*
或者,如果您愿意:
cout << "The address of the string is " << (void*)ptr << "\n";
(顺便提一下,cout << "The address of the string is " << static_cast<void*>(ptr) << "\n";
应该是ptr
而不是const char*
。
答案 1 :(得分:2)
将其投射到任何其他指针。 (void *)ptr或reinterpret_cast&lt; int *&gt;(ptr)或其他东西。