c - 从函数返回 char * 的内容

标签 c pointers return-value string-literals

<分区>

最近遇到以下代码,它声明一个 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/

相关文章:

c - 地址=通过宏定义的数据

java - 返回一个使用最终原语的匿名类。它是如何工作的?

powershell - 如何通过Power Shell Invoke-RestMethod获取返回值

c - 如何知道编译器是否执行内存对齐?

在 OpenCV 中从 kmeans 数据创建聚类图像

c - 指针游戏数组不知道如何将指针向后移动

c - 使用 void 指针在节点中存储任何类型的数据(可以是 int char 或结构)

Javascript - 返回返回函数的值

C - for 循环仅执行 scanf 之后的循环

c - 查询编译警告(编译C程序)