相关疑难解决方法(0)

为什么返回对字符串文字的引用是对临时的引用?

常规字符串字符串文字具有以下定义:

普通字符串文字和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)

那两者有什么区别?

c++ temporary-objects

11
推荐指数
2
解决办法
1420
查看次数

如何从函数返回字符串文字

关于从函数返回字符串文字或字符串我总是很困惑.我被告知可能存在内存泄漏,因为您不知道何时会删除内存?

例如,在下面的代码中,如何实现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*,它应该是什么?

c++ string return-type literals

7
推荐指数
2
解决办法
1万
查看次数

C变量的范围

可能重复:
从函数安全且可移植返回字符串文字地址?
C语言中字符串文字的"生命周期"

您好我有点困惑

char *func()
 {

    return "Hello";
 }
Run Code Online (Sandbox Code Playgroud)

这里"Hello"是字符序列/数组.它是一个局部变量,一旦函数返回它就必须消失.那我们怎么能得到正确的价值呢?

c heap scope local

5
推荐指数
1
解决办法
247
查看次数

标签 统计

c++ ×2

c ×1

heap ×1

literals ×1

local ×1

return-type ×1

scope ×1

string ×1

temporary-objects ×1