Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 返回指向C中字符的指针_C++_Arrays_Pointers_Return - Fatal编程技术网

C++ 返回指向C中字符的指针

C++ 返回指向C中字符的指针,c++,arrays,pointers,return,C++,Arrays,Pointers,Return,我有一个遗留代码段,看起来像: const char *GetStr() const { return (""); } 我想知道这是否是一个危险的代码,因为不是返回一个全局字符指针,而是返回一个本地字符串文本? 例如,下面的代码片段可能更好 const char *NullStr = ""; const char *GetStr() const { return NullStr; // instead of "" } 有哪些优点/缺点 甚至以下实施也可能更好: const char

我有一个遗留代码段,看起来像:

const char *GetStr() const {
  return ("");
}
我想知道这是否是一个危险的代码,因为不是返回一个全局字符指针,而是返回一个本地字符串文本? 例如,下面的代码片段可能更好

const char *NullStr = "";
const char *GetStr() const {
  return NullStr; // instead of ""
}
有哪些优点/缺点

甚至以下实施也可能更好:

const char *GetStr() const {
  static const char * lNullStr = "";
  return lNullStr;
}

您的第一个代码片段不是严格可移植的

另一种选择是:

const char *GetStr() const {
    static const char* s = "";
    return s;  
}

<> p>也有“代码> S/code”的功能包含在函数中。

您使用C++还是C++?但是它是遗留代码的一部分,继承是编程C++(我相信您确实考虑了<代码> const 限定函数,即使是传统的C++代码,也不要标记C。那么您就不应该在字符串开头使用原始指针。我毫不谦虚地认为,函数的作者在编写函数时需要一记耳光。还有“现代”C++有返回数据的替代方案。最后,如果确实需要指针,那么返回“null”的正确方法应该是null指针。