<分区>
最近遇到以下代码,它声明一个 char *p,赋值如 p="GOOD"并返回 return p。函数调用完成返回值是否有效?
const char * get_state(int state)
{
char *p;
if (state) {
p = "GOOD";
}
else
{
p = "BAD";
}
return p;
}
<分区>
最近遇到以下代码,它声明一个 char *p,赋值如 p="GOOD"并返回 return p。函数调用完成返回值是否有效?
const char * get_state(int state)
{
char *p;
if (state) {
p = "GOOD";
}
else
{
p = "BAD";
}
return p;
}
最佳答案
是的,它是有效的。字符串文字 "GOOD"
和 "BAD"
保证在永久的静态存储中,并且即使在 get_state()
之后也将继续存在> 返回。
// Invalid
char str[] = "GOOD";
char *p = str;
return p;
// Valid
char *p = "GOOD";
return p;
关于c - 从函数返回 char * 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15927107/