此问题在此处已有答案:
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));
}
字符串
返回一个指向这些字符串字面量的指针是危险的吗?这种方法有什么问题?
1条答案
按热度按时间xfb7svmp1#
这段代码没有问题。字符串文字存储在二进制文件的只读数据部分。返回一个
char const *
是一个完全有效的代码。但是,如果你返回了一个char *
,如果有人试图修改它,它可能会触发未定义的行为。