返回一个临时的const char * – 它会工作
发布时间:2020-12-16 10:37:22 所属栏目:百科 来源:网络整理
导读:参见英文答案 What is the lifespan of string literals in C? ????????????????????????????????????1个 我想创建一个方法get_name(…),它返回enum_value的名称.枚举值很少,但可以达到1 ^ 32 – 1(所以我认为我不能使用数组映射). 我做了以下事情: const c
参见英文答案 >
What is the lifespan of string literals in C? ????????????????????????????????????1个
我想创建一个方法get_name(…),它返回enum_value的名称.枚举值很少,但可以达到1 ^ 32 – 1(所以我认为我不能使用数组映射). 我做了以下事情: const char* get_name(type_t x) { static const char* name_1 = "NAME_FOR_TYPE_1"; static const char* name_2 = "NAME_FOR_TYPE_2"; ... static const char* invalid = "INVALID"; switch (x) { case type_1: return name_1; case type_2: return name_2; ... } return invalid; } 然后,我被告知以下也会有效: const char* get_name(type_t x) { switch (x) { case type_1: return "NAME_FOR_TYPE_1"; case type_2: return "NAME_FOR_TYPE_2"; ... } return "INVALID"; } 真的吗?它会一直有效吗? 我没有返回指向临时的指针吗? 解决方法
字符串文字存储为具有完整程序生命周期的数组.指向它们的指针永远不会变得无效.
所以做第二种选择是安全的,并没有涉及“临时”. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |