您好我有点困惑
char *func()
{
return "Hello";
}
Run Code Online (Sandbox Code Playgroud)
这里"Hello"是字符序列/数组.它是一个局部变量,一旦函数返回它就必须消失.那我们怎么能得到正确的价值呢?
hmj*_*mjd 10
它"Hello"
是一个字符串文字,将在程序的生命周期中存在.引用C99标准的相关部分:
...然后,多字节字符序列用于初始化静态存储持续时间和长度的数组,足以包含序列...
标识符使用外部或内部链接声明的对象,或者使用存储类说明符static声明的对象具有静态存储持续时间.它的生命周期是程序的整个执行,它的存储值只在程序启动之前初始化一次.
函数的返回值应该是const char*
尝试修改字符串文字是未定义的行为.