我有以下函数,最初会对函数参数执行一些验证。
char *doSomething(const char* first, const char* second) {
if((first == nullptr || *first == '\0') && (second == nullptr || *second == '\0')) {
return nullptr;
} else if (first == nullptr || *first == '\0') {
return (char *) second;
} else if (second == nullptr || *second == '\0') {
return (char *) first;
}
//doSomething
}
强制转换功能参数是否返回char*
指向内存中不同区域的新值?我不想允许使用此功能的人操纵常量参数所指向的值。char*
如果一个为nullptr
空或为空,我希望返回一个与参数之一相同的值。
后续:布尔变量在这里会更好吗?我意识到我要对每个变量执行两次相同的检查,但是在此函数代码的其他任何地方都不会使用此布尔值。
不,它不会使任何简单的新对象抛弃const
到您声明为不可变的内存区域。通常,这会导致可怕的“未定义行为”,但是如果它们来自非const
指针,那么您会没事的(编辑-感谢@anatolyg)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句