不允许从'const char*'到'void*'的static_cast

Lin*_*oln 6 c++ casting c-strings

在C++中,我正在尝试打印C字符串的地址但是我的演员似乎有些问题.我从一本书中复制了代码,但它不能在我的mac上编译.

const char *const word = "hello";
cout << word << endl; // Prints "hello"
cout << static_cast< void * >(word) << endl;  // Prints address of word
Run Code Online (Sandbox Code Playgroud)

zne*_*eak 21

你试图抛弃"constness":word指向常量数据,但结果static_cast<void*>不是指向常量数据的指针.static_cast不会让你这样做.

你应该使用static_cast<const void*>.

  • @Lincoln,`cout << X`根据`X`的类型做了不同的事情.由于`char*`和`const char*`经常用于表示文本数据,因此C++标准人员决定当X是`char*`或`const char*`时,它应该打印它指向的字符.但是,`void*`和`const void*`基本上没有意义(它可能是任何东西),所以标准人员认为最方便的做法是打印地址. (4认同)