如果const char*在函数调用中转换为char*,则可能出现任何问题

kri*_*ish 1 c++ visual-c++

在fun1()中我得到一个字符串,我需要将这个字符串数据传递给函数fun2(),它接受参数char*

function2原型如下

void fun2(char *p);
Run Code Online (Sandbox Code Playgroud)

我从fun1调用fun2,如下所示

void fun1()
{
    fun2((char *)str.c_str());
}
Run Code Online (Sandbox Code Playgroud)

从const char*到char*的转换是否存在任何潜在问题

eml*_*lai 7

如果fun2尝试修改const char*返回的指向的数据,std::string::c_str那么它的未定义行为.

如果fun2不修改指向的数据p,那么就不会有任何问题.(但是,无论如何,fun2应该宣布采取a const char*而不是a char*.)

  • 如果数据本身是"const",那只是UB. (3认同)