C++11 如何初始化常量字符*?如何检查它是否存在?
我想初始化一个常量字符。它将是一个单词数组C++11 如何初始化常量字符*?如何检查它是否存在?,c++11,C++11,我想初始化一个常量字符。它将是一个单词数组 const char **somechar; //Is there any way to initialize here? // value = somevalue; somechar = new const char *[somevalue]; //After the use, How do I check if the array exists or not? (before deleting) delete [] somechar;
const char **somechar;
//Is there any way to initialize here? //
value = somevalue;
somechar = new const char *[somevalue];
//After the use, How do I check if the array exists or not? (before deleting)
delete [] somechar;
如何初始化常量字符*
使用默认值、值、副本或列表初始化中的任何一种。但是,请注意,默认情况下初始化指针时会留下一个不确定的值,因此除了与null进行比较和分配新值之外,它对任何事情都没有用处
此默认值初始化类型为const char**
的somechar
这具有未定义的行为,因为somevalue
是默认初始化的,因此具有不确定的值。访问一个不确定的值有错误
此副本分配const char**somechar
并默认初始化const char*
指针数组
使用后,如何检查数组是否存在?(删去之前) 您只能检查指针是否为空,或者两个指针是否指向同一对象,或者如果指针指向同一数组,则可以比较它们的相关顺序和距离 如果指针为null,则它不会指向任何对象。如果指针不为空,则它要么指向存在的对象(指针未被删除),要么指向已销毁但不存在的对象(指针已被删除,即指针悬空) 无法检查非空指针是否指向现有对象或它是否处于悬空状态。您必须对程序进行结构化,以便不必进行此类检查。实现这一点的最简单和常用方法是将数组包装在RAII容器中,如下所示:
std::vector<std::string> somechar;
std::vector somechar;
初始化并检查是否存在nullptr
?或者只使用std::vector
。
value = somevalue;
somechar = new const char *[somevalue];
std::vector<std::string> somechar;