将返回的char * 设置为函数中定义的字符串字面量会产生什么问题?[重复]

sg24os4d  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(107)

此问题在此处已有答案

Returning a pointer to a literal (or constant) character array (string)(3个答案)
Lifetime of a string literal returned by a function(5个回答)
Is it safe to return const char * that was assigned string literal from function?(1个答案)
15天前关闭
例如:

static const char * color_to_str(enum Color color) {
    switch (color) {
       case COLOR_RED:
           return "RED";
       case COLOR_BLUE:
           return "BLUE";
       default:
           return "UNKNOWN";
    }
}

static void do_something() {
   printf("The color is %s\n", color_to_str(COLOR_RED));
}

字符串
返回一个指向这些字符串字面量的指针是危险的吗?这种方法有什么问题?

xfb7svmp

xfb7svmp1#

这段代码没有问题。字符串文字存储在二进制文件的只读数据部分。返回一个char const *是一个完全有效的代码。但是,如果你返回了一个char *,如果有人试图修改它,它可能会触发未定义的行为。

相关问题