【发布时间】:2018-06-04 09:02:11
【问题描述】:
我有一个字符串变量
string pr00("")
我想调用方法 fun1
fun1(demo *dm)
demo定义如下
typedef struct
{
char pr00[100];
}demo;
调用这个方法安全吗
fun1((demo*)pr00);
谢谢,BR
【问题讨论】:
-
不,这不安全。这是非常不安全的,
std::string是一个复杂的结构,与您的demo结构非常不同。对于初学者来说,它们的大小不同。更不用说标准明确地将不相关的结构/类之间的转换标记为 UB。不要那样做。 -
不,将
std::string转换为char*使用std::string::data()是不安全的 -
也许this SO问题对你来说可能很有趣。
-
你认为是为什么?您不会将其他类随机转换为其他随机类吗?