将char数组转换为unsigned char*

TQC*_*ier 6 c++ type-conversion

有没有办法转换char[]unsigned char*

char buf[50] = "this is a test"; 
unsigned char* conbuf = // what should I add here
Run Code Online (Sandbox Code Playgroud)

Mot*_*tti 7

虽然它在技术上可能不是100%合法,但这将起作用reinterpret_cast<unsigned char*>(buf).


这不是100%技术合法的原因是由于第5.2.10条第expr.reinterpret.cast7 节.

指向对象的指针可以显式转换为指向不同类型对象的指针.原始类型产生原始指针值,这种指针转换的结果是未指定的.

我认为这意味着*reinterpret_cast<unsigned char*>(buf) = 'a'未指明但是*reinterpret_cast<char*>(reinterpret_cast<unsigned char*>(buf)) = 'a'没关系.


Dav*_*ave 6

就投了吗?

unsigned char *conbuf = (unsigned char *)buf;
Run Code Online (Sandbox Code Playgroud)

  • 在 C++ 中,“Just cast it”总是需要免责声明 :) (6认同)