从'const char*'到'unsigned char*'的转换无效

anu*_*amD 13 c++ casting type-conversion

一个简单的C++代码:

int main(){
unsigned char* t="123";
}
Run Code Online (Sandbox Code Playgroud)

使用g ++进行编译时出现以下错误:

invalid conversion from ‘const char*’ to ‘unsigned char*’ [-fpermissive]
Run Code Online (Sandbox Code Playgroud)

为什么?

Vla*_*cow 25

在C++中,字符串文字具有常量字符数组的类型.例如,字符串文字"123"具有类型const char[4].

在极少数例外的表达式中,数组转换为指向其第一个元素的指针.

所以在这个宣言中

unsigned char* t="123";
Run Code Online (Sandbox Code Playgroud)

初始化程序有类型const char *.有没有隐式转换从const char *unsigned char *

你可以写

const unsigned char* t = reinterpret_cast<const unsigned char *>( "123" );
Run Code Online (Sandbox Code Playgroud)