常规字符串字符串文字具有以下定义:
普通字符串文字和UTF-8字符串文字也称为窄字符串文字.窄字符串文字的类型为"n const char数组",其中n是下面定义的字符串大小,并且具有静态存储持续时间(3.7).
我假设因为它具有静态存储持续时间并且它们通常被放置在ROM中,如果有一个悬挂引用它真的没什么大不了的.以下代码发出警告
const char* const & foo()
{
return "Hello";
}
// warning: returning reference to temporary [-Wreturn-local-addr]
Run Code Online (Sandbox Code Playgroud)
但即使没有static关键字,这也没关系
const char* const & foo()
{
const char* const & s = "Hello";
return s;
}
Run Code Online (Sandbox Code Playgroud)
那两者有什么区别?
关于从函数返回字符串文字或字符串我总是很困惑.我被告知可能存在内存泄漏,因为您不知道何时会删除内存?
例如,在下面的代码中,如何实现foo()以使代码的输出为"Hello World"?
void foo ( ) // you can add parameters here.
{
}
int main ()
{
char *c;
foo ( );
printf ("%s",c);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
另外,如果返回类型foo()不是无效,但你可以返回char*,它应该是什么?
您好我有点困惑
char *func()
{
return "Hello";
}
Run Code Online (Sandbox Code Playgroud)
这里"Hello"是字符序列/数组.它是一个局部变量,一旦函数返回它就必须消失.那我们怎么能得到正确的价值呢?